首页 > 解决方案 > amd64 MOV 指令未正确复制

问题描述

发生了一些奇怪的事情,我不明白。

我有一个数据变量:

variable_a dq 0

我检查它是0:

(gdb) x variable_a 
0x0:    Cannot access memory at address 0x0

到目前为止,一切都很好。

我有拉克斯:

(gdb) i r
rax            0x7fffffffe9e2   140737488349666

我将 rax 移动到变量中。

mov [variable_a], rax

我打印变量。

(gdb) x variable_a 
0xffffffffffffe9e2:     <error: Cannot access memory at address 0xffffffffffffe9e2>

为什么会这样?看起来 1/4 的变量在应该为 0 时被设置为 1。

我改为使用 BSS 变量,它工作得很好。我正在使用 YASM。

标签: assemblyx86-64yasm

解决方案


推荐阅读