@Test public void testLdrEPostIndexedASR() throws InternalTranslationException, InterpreterException { // LDRBT r7,[r1],r3, ASR #2 interpreter.setRegister("R0", BigInteger.valueOf(0x07FFFFDCL), dw, ReilRegisterStatus.DEFINED); interpreter.setRegister("R1", BigInteger.valueOf(0x00008125L), dw, ReilRegisterStatus.DEFINED); interpreter.setRegister("R2", BigInteger.valueOf(0x00000046L), dw, ReilRegisterStatus.DEFINED); interpreter.setRegister("R3", BigInteger.valueOf(0x00452A02L), dw, ReilRegisterStatus.DEFINED); interpreter.setRegister("R4", BigInteger.valueOf(0x00008124L), dw, ReilRegisterStatus.DEFINED); interpreter.setRegister("R5", BigInteger.valueOf(0x000096A4L), dw, ReilRegisterStatus.DEFINED); interpreter.setRegister("R6", BigInteger.valueOf(0x00000000L), dw, ReilRegisterStatus.DEFINED); interpreter.setRegister("R7", BigInteger.valueOf(0x00000000L), dw, ReilRegisterStatus.DEFINED); interpreter.setRegister("R8", BigInteger.valueOf(0x00000000L), dw, ReilRegisterStatus.DEFINED); interpreter.setRegister("R9", BigInteger.valueOf(0x000000FFL), dw, ReilRegisterStatus.DEFINED); interpreter.setRegister("C", BigInteger.ONE, bt, ReilRegisterStatus.DEFINED); interpreter.setRegister("N", BigInteger.ZERO, bt, ReilRegisterStatus.DEFINED); interpreter.setRegister("Z", BigInteger.ONE, bt, ReilRegisterStatus.DEFINED); interpreter.setRegister("V", BigInteger.ZERO, bt, ReilRegisterStatus.DEFINED); interpreter.setRegister("Q", BigInteger.ZERO, bt, ReilRegisterStatus.DEFINED); interpreter.setMemory(0x8125L, 0x74737269L, 4); final MockOperandTree operandTree1 = new MockOperandTree(); operandTree1.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "b4"); operandTree1.root.m_children.add(new MockOperandTreeNode(ExpressionType.REGISTER, "R7")); final MockOperandTree operandTree2 = new MockOperandTree(); operandTree2.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "b4"); operandTree2.root.m_children.add(new MockOperandTreeNode(ExpressionType.OPERATOR, ",")); operandTree2 .root .getChildren() .get(0) .m_children .add(new MockOperandTreeNode(ExpressionType.MEMDEREF, "[")); operandTree2 .root .getChildren() .get(0) .getChildren() .get(0) .m_children .add(new MockOperandTreeNode(ExpressionType.REGISTER, "R1")); operandTree2 .root .getChildren() .get(0) .m_children .add(new MockOperandTreeNode(ExpressionType.OPERATOR, "ASR")); operandTree2 .root .getChildren() .get(0) .getChildren() .get(1) .m_children .add(new MockOperandTreeNode(ExpressionType.REGISTER, "R3")); operandTree2 .root .getChildren() .get(0) .getChildren() .get(1) .m_children .add(new MockOperandTreeNode(ExpressionType.IMMEDIATE_INTEGER, String.valueOf(2))); final List<MockOperandTree> operands = Lists.newArrayList(operandTree1, operandTree2); final IInstruction instruction = new MockInstruction("LDRBT", operands); translator.translate(environment, instruction, instructions); interpreter.interpret(TestHelpers.createMapping(instructions), BigInteger.valueOf(0x100L)); assertEquals(BigInteger.valueOf(0x07FFFFDCL), interpreter.getVariableValue("R0")); assertEquals(BigInteger.valueOf(0x0011CBA5L), interpreter.getVariableValue("R1")); assertEquals(BigInteger.valueOf(0x00000046L), interpreter.getVariableValue("R2")); assertEquals(BigInteger.valueOf(0x00452A02L), interpreter.getVariableValue("R3")); assertEquals(BigInteger.valueOf(0x00008124L), interpreter.getVariableValue("R4")); assertEquals(BigInteger.valueOf(0x000096A4L), interpreter.getVariableValue("R5")); assertEquals(BigInteger.valueOf(0x00000000L), interpreter.getVariableValue("R6")); assertEquals(BigInteger.valueOf(0x00000069L), interpreter.getVariableValue("R7")); assertEquals(BigInteger.valueOf(0x00000000L), interpreter.getVariableValue("R8")); assertEquals(BigInteger.valueOf(0x000000FFL), interpreter.getVariableValue("R9")); assertEquals(BigInteger.ONE, interpreter.getVariableValue("C")); assertEquals(BigInteger.ZERO, interpreter.getVariableValue("N")); assertEquals(BigInteger.ONE, interpreter.getVariableValue("Z")); assertEquals(BigInteger.ZERO, interpreter.getVariableValue("V")); assertEquals(BigInteger.ZERO, interpreter.getVariableValue("Q")); assertEquals(BigInteger.valueOf(4), BigInteger.valueOf(interpreter.getMemorySize())); assertEquals(16, TestHelpers.filterNativeRegisters(interpreter.getDefinedRegisters()).size()); }