Я учусь использовать константы и могу загружать строки и целые числа в разные регистры.Единственная проблема заключается в том, что вместо отображения 42
отображается 16777258
.Это один и тот же номер все время.Если я изменю _number
на другое значение, у меня также отобразится другое число.
Почему это нужно и что мне нужно делать?
Это мой код сборки:
.section __TEXT,__text,regular,pure_instructions
.globl _main
_main:
#Backup base and stack pointer
pushq %rbp
movq %rsp, %rbp
#Move arguments
leaq L_.str(%rip), %rdi
movl _number(%rip), %esi
#Should calll printf("%d", 42)
callq _printf
#return 0
xorl %eax, %eax
popq %rbp
retq
.section __TEXT,__cstring,cstring_literals
L_.str:
.asciz "%d"
_number:
.long 42