Exemple #1
0
    def testUpdateSpAndOrPopRegisters(self):
        self.assertEqual(
            bytes([0b0, 0b10101000]),
            EncodeAddressUnwind(
                AddressUnwind(
                    address_offset=0,
                    unwind_type=UnwindType.UPDATE_SP_AND_OR_POP_REGISTERS,
                    sp_offset=0x4,
                    registers=(4, 14))))

        self.assertEqual(
            bytes([0b0]),
            EncodeAddressUnwind(
                AddressUnwind(
                    address_offset=0,
                    unwind_type=UnwindType.UPDATE_SP_AND_OR_POP_REGISTERS,
                    sp_offset=0x4,
                    registers=tuple())))

        self.assertEqual(
            bytes([0b10101000]),
            EncodeAddressUnwind(
                AddressUnwind(
                    address_offset=0,
                    unwind_type=UnwindType.UPDATE_SP_AND_OR_POP_REGISTERS,
                    sp_offset=0,
                    registers=(4, 14))))
Exemple #2
0
 def testNoAction(self):
     self.assertEqual(
         bytes([]),
         EncodeAddressUnwind(
             AddressUnwind(address_offset=0,
                           unwind_type=UnwindType.NO_ACTION,
                           sp_offset=0,
                           registers=tuple())))
Exemple #3
0
 def testReturnToLr(self):
     self.assertEqual(
         bytes([0b10110000]),
         EncodeAddressUnwind(
             AddressUnwind(address_offset=0,
                           unwind_type=UnwindType.RETURN_TO_LR,
                           sp_offset=0,
                           registers=tuple())))
Exemple #4
0
    def testRestoreSpFromRegisters(self):
        self.assertEqual(
            bytes([0b10010100, 0b0]),
            EncodeAddressUnwind(
                AddressUnwind(address_offset=0,
                              unwind_type=UnwindType.RESTORE_SP_FROM_REGISTER,
                              sp_offset=0x4,
                              registers=(4, ))))

        self.assertEqual(
            bytes([0b10010100]),
            EncodeAddressUnwind(
                AddressUnwind(address_offset=0,
                              unwind_type=UnwindType.RESTORE_SP_FROM_REGISTER,
                              sp_offset=0,
                              registers=(4, ))))

        self.assertRaises(
            AssertionError, lambda: EncodeAddressUnwind(
                AddressUnwind(address_offset=0,
                              unwind_type=UnwindType.RESTORE_SP_FROM_REGISTER,
                              sp_offset=0x4,
                              registers=tuple())))