Example #1
0
File: isa.py Project: 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
Example #2
0
File: isa.py Project: 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
Example #3
0
File: isa.py Project: 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
Example #4
0
File: isa.py Project: 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
Example #5
0
File: isa.py Project: cfbolz/pydgin
def execute_slti(s, inst):
    s.rf[inst.rt()] = signed(s.rf[inst.rs()]) < signed(sext(inst.imm()))
    s.pc += 4
Example #6
0
File: isa.py Project: cfbolz/pydgin
def execute_sltiu(s, inst):
    s.rf[inst.rt()] = s.rf[inst.rs()] < sext(inst.imm())
    s.pc += 4
Example #7
0
File: isa.py Project: cfbolz/pydgin
def execute_addiu(s, inst):
    s.rf[inst.rt()] = trim(s.rf[inst.rs()] + sext(inst.imm()))
    s.pc += 4
Example #8
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
Example #9
0
 def xs(self, lo, len):
     return sext(self.bits >> lo, len)
Example #10
0
 def xs(self, lo, len):
     return sext(self.bits >> lo, len)
Example #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