gpt4 book ai didi

assembly - 尝试在汇编程序中打印变量时 GDB 显示错误消息

转载 作者:行者123 更新时间:2023-12-03 13:39:22 26 4
gpt4 key购买 nike

在从书中学习汇编语言时,有一个 list 显示了一些基本操作:

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”也是如此。但是,为 int 转换 'a' 或 'b' 有效:
(gdb) p (int)a
$11 = 176
(gdb) p (int)b
$12 = 4097

但这不应该在没有类型转换的情况下工作吗?为什么我需要转换?我在源文件中犯了什么错误?

最佳答案

较旧的 GDB 过去默认假设符号是 int当它没有描述大小/类型的调试信息时。

这通常会导致比当前行为更多的困惑,因此对其进行了更改。例如The value displayed in Kdbg is wrong -- NASM

关于assembly - 尝试在汇编程序中打印变量时 GDB 显示错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52250524/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com