При изучении ассемблера из книги есть список, показывающий некоторые основные операции:
segment .data
a dq 176
b dq 4097
segment .text
global _start
_start:
mov rax, [a] ; Move a into rax.
add rax, [b] ; add b o rax.
xor rax, rax
ret
После сборки с помощью команды "$yasm -f elf64 -g dwarf2 -l listing.lst listing.asm"
и связывания с "$ld -o listing listing.o"
я запустил программу в gdb. Там всякий раз, когда я пытался напечатать значение переменной, GDB показывал это сообщение об ошибке:
(gdb) p a
'a' has unknown type; cast it to its declared type
То же самое для другой переменной 'b'. Однако приведение 'a' или 'b' к int сработало:
(gdb) p (int)a
$11 = 176
(gdb) p (int)b
$12 = 4097
Но разве это не должно работать без кастинга? Зачем мне кастовать? Какую ошибку я допустил в моем исходном файле?