Получить размер инструкции по сборке

Мне нужно читать инструкции один за другим из небольшого сегмента кода в памяти, и я должен выяснить размер инструкций, которые у меня есть в памяти.

Ниже приведен лишь пример необработанного дизассемблированного кода для объяснения моей проблемы:

 (gdb) disas /r 0x400281,+8
 Dump of assembler code from 0x400281 to 0x400289:
    0x0000000000400281:  48 89 c7       movq   %rax, %rdi
    0x0000000000400284:  b0 00          movb   $0, %al
    0x0000000000400286:  e8 f2 48 00 00 callq  0x10001f30a
 End of assembler dump.

Я знаю адрес памяти первой инструкции (в данном случае p = 0x0000000000400281) и могу прочитать каждый адрес памяти из p. Проблема в том, что я не могу знать, является ли значение * (p + offset) кодом операции, или нет, и я знаю, что информация о размере для каждого кода операции не является фиксированной.

Итак, могу ли я получить размер каждой инструкции по сборке? Или я могу знать, является ли значение, которое я прочитал, кодом операции или информацией?

Ответы на вопрос(4)

Ваш ответ на вопрос