38 lines
889 B
Python
Executable File
38 lines
889 B
Python
Executable File
f7s = {
|
|
'ADD': 0,
|
|
'SUB': 32,
|
|
'AND': 0,
|
|
'OR': 0,
|
|
'XOR': 0,
|
|
}
|
|
f3s = {
|
|
'ADD': 0,
|
|
'SUB': 0,
|
|
'AND': 7,
|
|
'OR': 6,
|
|
'XOR': 4,
|
|
}
|
|
opcodes = {
|
|
'ADD': 51,
|
|
'SUB': 51,
|
|
'AND': 51,
|
|
'OR': 51,
|
|
'XOR': 51,
|
|
}
|
|
print('Separate all arguments with spaces ONLY.')
|
|
for x in range(10):
|
|
asm = input(f'I{x}: ').split()
|
|
if asm[0] in ('ADD', 'SUB', 'XOR', 'OR', 'AND'):
|
|
rd = eval(asm[1]) << 7
|
|
rs1 = eval(asm[2]) << 15
|
|
rs2 = eval(asm[3]) << 20
|
|
f7 = f7s[asm[0]] << 25
|
|
f3 = f3s[asm[0]] << 12
|
|
opcode = opcodes[asm[0]]
|
|
inst = f7 + rs2 + rs1 + f3 + rd + opcode
|
|
bininst = bin(inst)
|
|
bininst = bininst[:2] + '0'*(30-len(bininst)) + bininst[2:]
|
|
hexinst = hex(inst)
|
|
hexinst = hexinst[:2] + '0'*(7-len(hexinst)) + hexinst[2:]
|
|
print(bininst)
|
|
print(hexinst) |