Пример #1
0
 def instr_lui(self, node):
     'imm[31:12] rd opcode'
     instr = node['instr']
     opcode = instructions.get_opcode(instr)
     rd = self.register_bin(node['rd'])
     imm = node['imm']
     return f'{imm}{rd}{opcode}'
Пример #2
0
 def instr_load(self, node):
     'imm[11:0] rs1 func3 rd opcode'
     instr = node['instr']
     opcode = instructions.get_opcode(instr)
     imm = node['imm']
     rd = self.register_bin(node['rd'])
     rs1 = self.register_bin(node['rs1'])
     func3 = instructions.get_func3(instr)
     return f'{imm}{rs1}{func3}{rd}{opcode}'
Пример #3
0
 def type_r(self, node):
     'func7 rs2 rs1 func3 rd opcode'
     instr = node['instr']
     opcode = instructions.get_opcode(instr)
     rd = self.register_bin(node['rd'])
     func3 = instructions.get_func3(instr)
     rs1 = self.register_bin(node['rs1'])
     rs2 = self.register_bin(node['rs2'])
     func7 = instructions.get_func7(instr)
     return f'{func7}{rs2}{rs1}{func3}{rd}{opcode}'
Пример #4
0
 def type_i(self, node):
     'imm[11:0] rs1 func3 rd opcode'
     instr = node['instr']
     opcode = instructions.get_opcode(instr)
     rd = self.register_bin(node['rd'])
     func3 = instructions.get_func3(instr)
     rs1 = self.register_bin(node['rs1'])
     imm = node['imm']
     assert len(imm) == 12
     return f'{imm}{rs1}{func3}{rd}{opcode}'
Пример #5
0
 def instr_jal(self, node):
     'imm[20] imm[10:1] imm[11] imm[19:12] rd opcode'
     instr = node['instr']
     opcode = instructions.get_opcode(instr)
     rd = self.register_bin(node['rd'])
     imm = node['imm']
     imm_19_12 = imm[-19:-11]
     imm_11 = imm[-11]
     imm_10_1 = imm[-10:]
     imm_20 = imm[-20]
     return f'{imm_20}{imm_10_1}{imm_11}{imm_19_12}{rd}{opcode}'
Пример #6
0
 def instr_store(self, node):
     'imm[11:5] rs2 rs1 func3 imm[4:0] opcode'
     instr = node['instr']
     opcode = instructions.get_opcode(instr)
     imm = node['imm']
     imm_11_5 = imm[-12:-5]
     imm_4_0 = imm[-5:]
     rs2 = self.register_bin(node['rs2'])
     rs1 = self.register_bin(node['rs1'])
     func3 = instructions.get_func3(instr)
     return f'{imm_11_5}{rs2}{rs1}{func3}{imm_4_0}{opcode}'
Пример #7
0
 def type_sb(self, node):
     'imm[12] imm[10:5] rs2 rs1 func3 imm[4:1] imm[11] opcode'
     instr = node['instr']
     opcode = instructions.get_opcode(instr)
     imm = node['imm']
     imm_11 = imm[-12]
     imm_4_1 = imm[-4:]
     imm_10_5 = imm[-10:-4]
     imm_12 = imm[-12]
     func3 = instructions.get_func3(instr)
     rs1 = self.register_bin(node['rs1'])
     rs2 = self.register_bin(node['rs2'])
     return f'{imm_12}{imm_10_5}{rs2}{rs1}{func3}{imm_4_1}{imm_11}{opcode}'