コード例 #1
0
ファイル: isa.py プロジェクト: cfbolz/pydgin
def execute_lbu(s, inst):
    addr = trim(s.rf[inst.rs()] + sext(inst.imm()))
    s.rf[inst.rt()] = s.mem.read(addr, 1)
    s.pc += 4
コード例 #2
0
ファイル: isa.py プロジェクト: cfbolz/pydgin
def execute_sb(s, inst):
    addr = trim(s.rf[inst.rs()] + sext(inst.imm()))
    s.mem.write(addr, 1, s.rf[inst.rt()])
    s.pc += 4
コード例 #3
0
ファイル: isa.py プロジェクト: cfbolz/pydgin
def execute_bne(s, inst):
    if s.rf[inst.rs()] != s.rf[inst.rt()]:
        s.pc = s.pc + 4 + (signed(sext(inst.imm())) << 2)
    else:
        s.pc += 4
コード例 #4
0
ファイル: isa.py プロジェクト: cfbolz/pydgin
def execute_bgez(s, inst):
    if signed(s.rf[inst.rs()]) >= 0:
        s.pc = s.pc + 4 + (signed(sext(inst.imm())) << 2)
    else:
        s.pc += 4
コード例 #5
0
ファイル: isa.py プロジェクト: cfbolz/pydgin
def execute_slti(s, inst):
    s.rf[inst.rt()] = signed(s.rf[inst.rs()]) < signed(sext(inst.imm()))
    s.pc += 4
コード例 #6
0
ファイル: isa.py プロジェクト: cfbolz/pydgin
def execute_sltiu(s, inst):
    s.rf[inst.rt()] = s.rf[inst.rs()] < sext(inst.imm())
    s.pc += 4
コード例 #7
0
ファイル: isa.py プロジェクト: cfbolz/pydgin
def execute_addiu(s, inst):
    s.rf[inst.rt()] = trim(s.rf[inst.rs()] + sext(inst.imm()))
    s.pc += 4
コード例 #8
0
ファイル: isa_RV32I.py プロジェクト: cornell-brg/pydgin
def execute_lh( s, inst ):
  addr = trim_64( s.rf[inst.rs1] + inst.i_imm )
  s.rf[inst.rd] = sext( s.mem.read( addr, 2 ), 16 )
  s.pc += 4
コード例 #9
0
ファイル: instruction.py プロジェクト: igrr/pydgin-min
 def xs(self, lo, len):
     return sext(self.bits >> lo, len)
コード例 #10
0
ファイル: instruction.py プロジェクト: jiangxilong/pydgin
 def xs(self, lo, len):
     return sext(self.bits >> lo, len)
コード例 #11
0
def execute_lh(s, inst):
    addr = trim_64(s.rf[inst.rs1] + inst.i_imm)
    s.rf[inst.rd] = sext(s.mem.read(addr, 2), 16)
    s.pc += 4