def test_64bit_store_disppm(): state = new_state(rf0=0xffffffff, rf1=0xffffffff, rf5=8) # bb: 00=byte, 01=half-word, 10=word, 11=double-word instr = opcode_factory.ldstrpmd32(rd=0, rn=5, sub=0, imm=1, bb=0b11, s=1) name, executefn = decode(instr) executefn(state, Instruction(instr, None)) expected_state = StateChecker(rf0=0xffffffff, rf1=0xffffffff) expected_state.check(state, memory=[(8, 4, 0xffffffff), (12, 4, 0xffffffff)])
def test_execute_str_disp_pm(sub, new_rn): # Store. state = new_state(rf0=0xffffffff, rf5=8) # bb: 00=byte, 01=half-word, 10=word, 11=double-word instr = opcode_factory.ldstrpmd32(rd=0, rn=5, sub=sub, imm=1, bb=0b10, s=1) name, executefn = decode(instr) executefn(state, Instruction(instr, None)) expected_state = StateChecker(rf0=0xffffffff, rf5=new_rn) expected_state.check(state, memory=[(8, 4, 0xffffffff)])
def test_execute_ldr_disp_pm(sub, new_rn): # Load. state = new_state(rf5=8) state.mem.write(8, 4, 42) # Start address, number of bytes, value # bb: 00=byte, 01=half-word, 10=word, 11=double-word instr = opcode_factory.ldstrpmd32(rd=0, rn=5, sub=sub, imm=1, bb=0b10, s=0) name, executefn = decode(instr) executefn(state, Instruction(instr, None)) expected_state = StateChecker(rf0=42, rf5=new_rn) expected_state.check(state)
def test_64bit_load_disppm(): state = new_state(rf5=8) state.mem.write(8, 4, 0xffffffff) state.mem.write(12, 4, 0xffffffff) # bb: 00=byte, 01=half-word, 10=word, 11=double-word instr = opcode_factory.ldstrpmd32(rd=0, rn=5, imm=0, bb=0b11, s=0) name, executefn = decode(instr) executefn(state, Instruction(instr, None)) expected_state = StateChecker(rf0=0xffffffff, rf1=0xffffffff) expected_state.check(state)
def test_decode_ldstrpmd32(): instr = opcode_factory.ldstrpmd32(rd=1, rn=0, sub=1, imm=0b1010101010, bb=0b11, s=1) name, executefn = decode(instr) assert Instruction(instr, '').sub == 1 assert Instruction(instr, '').s == 1 assert Instruction(instr, '').size == 0b11
('lsl16', opcode_factory.lsl16(rd=1, rn=1, rm=1)), ('lsrimm16', opcode_factory.lsr16_immediate(rd=1, rn=1, imm=1)), ('lslimm16', opcode_factory.lsl16_immediate(rd=1, rn=1, imm=1)), ('asrimm16', opcode_factory.asr16_immediate(rd=1, rn=1, imm=1)), ('bitrimm16', opcode_factory.bitr16_immediate(rd=1, rn=1, imm=1)), ('lsrimm32', opcode_factory.lsr32_immediate(rd=1, rn=1, imm=1)), ('lslimm32', opcode_factory.lsl32_immediate(rd=1, rn=1, imm=1)), ('asrimm32', opcode_factory.asr32_immediate(rd=1, rn=1, imm=1)), ('bitrimm32', opcode_factory.bitr32_immediate(rd=1, rn=1, imm=1)), ('jr32', opcode_factory.jr32(rn=0)), ('jr16', opcode_factory.jr16(rn=0)), ('jalr32', opcode_factory.jalr32(rn=0)), ('jalr16', opcode_factory.jalr16(rn=0)), ('bcond32', opcode_factory.bcond32(condition=0b1111, imm=0)), ('bcond16', opcode_factory.bcond16(condition=0b1111, imm=0)), ('ldstrpmd32', opcode_factory.ldstrpmd32(rd=1, rn=0, sub=1, imm=0b1010101010, bb=0b11, s=1)), ('ldstrdisp16', opcode_factory.ldstrdisp16(rd=1, rn=0, imm=0b010, bb=0b11, s=1)), ('ldstrdisp32', opcode_factory.ldstrdisp32(rd=1, rn=0, sub=1, imm=0b1010101010, bb=0b11, s=1)), ('ldstrpm16', opcode_factory.ldstrpm16(rd=1, rn=0, rm=0, bb=0b11, s=1)), ('ldstrpm32', opcode_factory.ldstrpm32(rd=1, rn=0, rm=0, sub=1, bb=0b11, s=1)), ('ldstrind16', opcode_factory.ldstrind16(rd=1, rn=0, rm=0, bb=0b11, s=1)), ('ldstrind32', opcode_factory.ldstrind32(rd=1, rn=0, rm=0, sub=1, bb=0b11, s=1)), ('testset32', opcode_factory.testset32(rd=1, rn=0, rm=0, sub=1, bb=0b11)), ('fadd16', opcode_factory.fadd16(rd=1, rn=0, rm=0)), ('fsub16', opcode_factory.fsub16(rd=1, rn=0, rm=0)), ('fmul16', opcode_factory.fmul16(rd=1, rn=0, rm=0)), ('fmadd16', opcode_factory.fmadd16(rd=1, rn=0, rm=0)), ('fmsub16', opcode_factory.fmsub16(rd=1, rn=0, rm=0)), ('float16', opcode_factory.float16(rd=1, rn=0, rm=0)), ('fix16', opcode_factory.fix16(rd=1, rn=0, rm=0)), ('fabs16', opcode_factory.fabs16(rd=1, rn=0, rm=0)),