是否可以在 NASM 中使用 DB 指令在 .text 段中创建可写变量?

Shu*_*eng 3 windows x86 assembly nasm

我试过.text使用 eg在段中声明变量file_handle: dd 0

但是,尝试在此变量中存储某些内容会mov [file_handle], eax导致写入错误。

我知道,我可以在.data段中声明可写变量,但为了使代码更紧凑,我想像上面一样尝试。

是使用堆栈来存储这些值(例如文件句柄)的唯一可能性,还是我可以以某种方式写入上面的变量?

Rei*_*ica 5

默认情况下,可执行代码段不可写。这是基本的安全预防措施。不,这不是个好主意。但是,如果您坚持,因为无论如何这是一个玩具项目,请继续。

您可以通过让链接器知道将其标记为可写来使您的可写,例如将以下参数提供给 MS 链接器:

link /SECTION:.text,EWR ....
Run Code Online (Sandbox Code Playgroud)