在从书中学习汇编语言时,有一个清单显示了一些基本操作:
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
Run Code Online (Sandbox Code Playgroud)
使用"$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
Run Code Online (Sandbox Code Playgroud)
另一个变量“b”也是如此。但是,为 int 转换 'a' 或 'b' 有效:
(gdb) p (int)a
$11 = 176
(gdb) p …Run Code Online (Sandbox Code Playgroud)