コード例 #1
0
 def __init__(self):
     self.mem = MEMORY(SICXE_SIZE_MEMORY)
     self.devices = Devices(SICXE_SIZE_DEVICES)
     self.registers = reg.registers
     self.cu = CU(self)
コード例 #2
0
ファイル: alu.py プロジェクト: ekareem/SICXE
def compfrm(register: FLOAT, sw: INT, mem: MEMORY, addr, isImmediate=False):
    operand = addr if isImmediate else mem.getfloat(addr)
    cc = SICXE_CC_GT if register > operand else SICXE_CC_LT if register < operand else SICXE_CC_EQ
    sw.setbits(cc, (6, 8), BIG)
コード例 #3
0
ファイル: alu.py プロジェクト: ekareem/SICXE
def addrm(register: INT, mem: MEMORY, addr, isImmediate=False):
    operand = addr if isImmediate else mem.getword(addr, True)
    register.add(operand, setSelf=True)
コード例 #4
0
ファイル: alu.py プロジェクト: ekareem/SICXE
def stch(register: INT, mem: MEMORY, addr):
    mem.setbyte(addr, register.getbits((0, 8), False, LITTLE))
コード例 #5
0
ファイル: alu.py プロジェクト: ekareem/SICXE
def divfrm(register: FLOAT, mem: MEMORY, addr, isImmediate=False):
    operand = addr if isImmediate else mem.getfloat(addr)
    register.truediv(operand, setSelf=True)
コード例 #6
0
ファイル: alu.py プロジェクト: ekareem/SICXE
def stf(register: FLOAT, mem: MEMORY, addr):
    mem.set(addr, register.dec, 6)
コード例 #7
0
ファイル: alu.py プロジェクト: ekareem/SICXE
def st(register: INT, mem: MEMORY, addr):
    mem.setword(addr, register)
コード例 #8
0
ファイル: alu.py プロジェクト: ekareem/SICXE
def ldch(register: INT, mem: MEMORY, addr, isImmediate=False):
    operand = addr if isImmediate else mem.getbyte(addr)
    if operand < 0 or operand > 0xff:
        raise Exception('cannot be longer the a byte')
    register.setbits(operand, (0, 8), LITTLE)
コード例 #9
0
ファイル: alu.py プロジェクト: ekareem/SICXE
def ldf(register: FLOAT, mem: MEMORY, addr, isImmediate=False):
    if isImmediate:
        register.set(addr)
    else:
        register.dec = mem.get(addr, 6)
コード例 #10
0
ファイル: alu.py プロジェクト: ekareem/SICXE
def ld(register: INT, mem: MEMORY, addr, isImmediate=False):
    operand = addr if isImmediate else mem.getword(addr, False)
    register.set(operand)