sistemas - macos mojave
Problema NASM en OSX de 64 bits (1)
Estoy aprendiendo ASM y tengo un pequeño problema. No puedo "declarar" más de una cadena en "section.data". Estoy intentando algo como esto:
section .data
string1 db "test1 ", 0;
string2 db "test2 ", 0;
section .text
global _test
extern _puts
_test:
lea rdi, [rel string1]
call _puts
lea rdi, [rel string2]
call _puts
ret
Se supone que esta función imprime "test1 test2" en STDOUT, pero no funciona. El resultado es:
test2
¡Solo funciona para la última cadena almacenada! Si alguien sabe por qué, ¡por favor dígame!
Si está utilizando nasm
2.11.08, aquí hay un problema documentado relacionado con el direccionamiento relativo combinado con entradas múltiples en la sección de datos.
Puedes hacer una (o ambas) dos cosas para estar seguro.
En primer lugar, puede echar un vistazo al código ensamblador generado para investigar qué está produciendo realmente . Esa es probablemente la opción definitiva, ya que entonces puede ver exactamente qué ejecutará la CPU.
En segundo lugar, puede probar su código con un lanzamiento anterior de nasm
para ver si el problema desaparece. Si es así, eso es evidencia indirecta de que es el error en 2.11.08 lo que causa sus problemas.