What't mal con esa macro en la Asamblea GNU X86? Dice que el símbolo S no está definido durante la vinculación.Macro sustitución de un número constante de GAS
.macro S size=40
\size
.endm
lo estoy usando como
mov %eax, S
What't mal con esa macro en la Asamblea GNU X86? Dice que el símbolo S no está definido durante la vinculación.Macro sustitución de un número constante de GAS
.macro S size=40
\size
.endm
lo estoy usando como
mov %eax, S
macros se utilizan para crear plantillas para el código que utiliza con frecuencia, no a la entrada de un número constante. Como tal, no creo que el ensamblador haga expansión de macros dentro de una expresión. Como simplemente quiere un número, puede usar .set
para definir una constante.
.set S, 40
mov %eax, S
Además, en caso de que por lo general utiliza la sintaxis de Intel, asegúrese de que te das cuenta lo que este código está haciendo: En la actualidad almacena el valor de EAX en la memoria en la dirección 0x28. Si quiere poner el número 40 en eax, necesita invertir los operandos y usar un signo de dólar delante de S.
mov $S, %eax
¡Su respuesta es bastante útil y completa, gracias! –