Pregunta

Tengo un código como el siguiente:

.bss
woof: .long 0

.text
bleh:
...some op codes here.

Ahora me gustaría para trasladar la dirección de la trama en EAX. ¿Cuál es la sintaxis de Intel código aquí para hacer eso? Lo mismo ocurre con el movimiento de la dirección del bleh en, digamos, EBX.

Su ayuda es muy apreciada!

¿Fue útil?

Solución

La sección BSS no puede tener objetos reales en el mismo. Algunos ensambladores pueden todavía le permiten cambiar a la sección .bss, pero todo lo que puede hacer allí es decir algo como: x: . = . + 4.

En la mayoría de los ensambladores en estos días y en concreto en GNU para Intel, ya no es una directiva .bss, por lo que cambiar temporalmente a bss y crear el símbolo BSS de una sola vez con algo como: .comm sym,size,alignment. Es por eso que está supuestamente recibiendo un error " Directiva bss no reconocido " o algo por el estilo.

Y entonces se puede obtener la dirección, ya sea con:

lea woof, %eax

o

movl $woof, %eax

Actualización: AHA, la sintaxis Intel, no la arquitectura Intel. Aceptar:

.intel_syntax noprefix
    lea    esi,fun
    lea    esi,[fun]
    mov     eax,OFFSET FLAT:fun
.att_syntax
    lea     fun, %eax
    mov     $fun, %eax
.data
fun: .long 0x123

Todas las formas lea deben generar el mismo código.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top