Esempio n. 1
0
    def test_reuse_scratch_register(self):
        base_addr = 0xFEDCBA9876543210
        cb = LocationCodeBuilder64()
        cb.begin_reuse_scratch_register()
        cb.MOV(ecx, heap(base_addr))
        cb.MOV(ecx, heap(base_addr + 8))
        cb.end_reuse_scratch_register()

        expected_instructions = (
            # mov r11, 0xFEDCBA9876543210
            '\x49\xBB\x10\x32\x54\x76\x98\xBA\xDC\xFE' +
            # mov rcx, [r11]
            '\x49\x8B\x0B' +
            # mov rcx, [r11+8]
            '\x49\x8B\x4B\x08')
        assert cb.getvalue() == expected_instructions
Esempio n. 2
0
    def test_reuse_scratch_register(self):
        base_addr = 0xFEDCBA9876543210
        cb = LocationCodeBuilder64()
        cb.begin_reuse_scratch_register()
        cb.MOV(ecx, heap(base_addr))
        cb.MOV(ecx, heap(base_addr + 8))
        cb.end_reuse_scratch_register()

        expected_instructions = (
                # mov r11, 0xFEDCBA9876543210
                '\x49\xBB\x10\x32\x54\x76\x98\xBA\xDC\xFE' +
                # mov rcx, [r11]
                '\x49\x8B\x0B' +
                # mov rcx, [r11+8]
                '\x49\x8B\x4B\x08'
        )
        assert cb.getvalue() == expected_instructions
Esempio n. 3
0
    def test_MOV_64bit_address_into_r11(self):
        base_addr = 0xFEDCBA9876543210
        cb = LocationCodeBuilder64()
        cb.MOV(r11, heap(base_addr))

        expected_instructions = (
            # mov r11, 0xFEDCBA9876543210
            '\x49\xBB\x10\x32\x54\x76\x98\xBA\xDC\xFE' +
            # mov r11, [r11]
            '\x4D\x8B\x1B')
        assert cb.getvalue() == expected_instructions
Esempio n. 4
0
    def test_MOV_64bit_address_into_r11(self):
        base_addr = 0xFEDCBA9876543210
        cb = LocationCodeBuilder64()
        cb.MOV(r11, heap(base_addr))

        expected_instructions = (
                # mov r11, 0xFEDCBA9876543210
                '\x49\xBB\x10\x32\x54\x76\x98\xBA\xDC\xFE' +
                # mov r11, [r11]
                '\x4D\x8B\x1B'
        )
        assert cb.getvalue() == expected_instructions