2016-02-24 26 views
2

У меня возникли проблемы с пониманием того, как определяется местоположение адреса при декодировании с сборки на Y86. В примере,Как определить счетчик программ при декодировании от сборки до машинного кода (Y86)?

0x030   
0x030: 6300      # xorq %rax , %rax 
0x032: 50030001000000000000  # mrmovq 0x100(%rax) , %rbx 
0x03c: 50010002000000000000  # mrmovq 0x200(%rax) , %rcx 

, как это адрес расположения перейти от 0x030 до 0x032 в 0x03c? Каково уравнение для определения того, сколько места увеличивается?

ответ

2

Сколько байтов существует в 6300? Ответ: 2 и 0x030 + 2 = 0x032. Сколько байтов в 50030001000000000000? Ответ: 10 и 0x032 + 10 = 0x03c.

Итак, вы просто подсчитываете количество байтов в машинный код и добавляете к предыдущему адресу, чтобы получить следующий адрес.

+0

Ничего себе, спасибо большое! не думал, что это так просто. –

 Смежные вопросы

  • Нет связанных вопросов^_^