Como posso prender um `ss:` ou `es:` usando a sintaxe da Assembly AT&T
Pergunta
Como posso prender um SS:
ou ES:
Usando a sintaxe da Assembléia AT&T sem adicionar um .byte 0x36
ou .byte 0x26
?
ou seja. Como eu seria capaz de converter mov dword ptr ss:[esp+0x10], offset foo
Da sintaxe da Intel à AT&T sem usar:
.byte 0x36
movl $foo, 0x10(%esp)
eu tentei movl $foo, %ss:0x10(%esp)
que se reúne sem avisos, mas, olhando através do binário, ainda não adiciona SS:
Solução
Iirc, o SS:
O prefixo não é necessário quando usado com o ESP
e EBP
registra, porque para eles, já é o padrão.
Essa pode ser a razão pela qual o assembler simplesmente omite para economizar espaço; Portanto, a necessidade de emitir manualmente o SS:
prefixo como a 0x36
BYTE, como o assembler não modifica bytes brutos.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow