Considere esto x64 montaje NASM-sintaxis:¿Por qué se genera este código de máquina para "inc qword [rsp]"?
inc qword [rax]
inc qword [rcx]
inc qword [rdx]
inc qword [rbx]
inc qword [rsp]
inc qword [rbp]
inc qword [rsi]
inc qword [rdi]
Después de montar con nasm (y la vinculación con ld GNU), objdump -d
informa lo siguiente:
4000b0: 48 ff 00 incq (%rax)
4000b3: 48 ff 01 incq (%rcx)
4000b6: 48 ff 02 incq (%rdx)
4000b9: 48 ff 03 incq (%rbx)
4000bc: 48 ff 04 24 incq (%rsp)
4000c0: 48 ff 45 00 incq 0x0(%rbp)
4000c4: 48 ff 06 incq (%rsi)
4000c7: 48 ff 07 incq (%rdi)
el código generado para inc qword [rbp]
tiene sentido ya que la campo de modificación está establecido. Sin embargo, no puedo averiguar de dónde viene el 24
al ensamblar inc qword [rsp]
. He estado buscando en coder64 #xFF y nada me sugiere que se generen los 24. Obviamente me falta algo en un nivel superior.
Perfecto, ¡gracias! – jli