Obter tamanho das instruções de montagem

Preciso ler as instruções um a um em um pequeno segmento de código na memória e preciso descobrir o tamanho das instruções que tenho na memória.

A seguir, é apenas um exemplo de código desmontado bruto para explicar meu problema:

 (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.

Conheço o endereço de memória da primeira instrução (p = 0x0000000000400281 neste caso) e posso ler todos os endereços de memória de p. O problema é que não sei se o valor de * (p + deslocamento) é o código de operação ou não e sei que as informações de tamanho de cada código de operação não são fixas.

Então, posso obter o tamanho de cada instrução de montagem? Ou posso saber se o valor que leio é opcode ou informações?

questionAnswers(4)

yourAnswerToTheQuestion