我试图在NASM的BSS部分创建一个变量:
section .bss
i DD 12345
但是在尝试创建目标文件时,我收到了以下警告:
warning: attempt to initialize memory in BSS section `.bss': ignored
我认为这是可以理解的,因为BSS部分只能包含未初始化的变量。所以我尝试了以下方法:
section .bss
i DD 0
但我仍然得到同样的警告。
答案 0 :(得分:1)
使用RESB
和朋友。请参阅nasm manual:
3.2.2 RESB和朋友:声明未初始化的数据
RESB,RESW,RESD,RESQ,REST,RESO,RESY和RESZ都是为了设计的 在模块的BSS部分中使用:它们声明未初始化 储存空间。每个操作数都取一个操作数 字节,单词,双字或任何要保留的东西。如部分所述 2.2.7,NASM不支持通过编写DW来保留未初始化空间的MASM / TASM语法吗?或者类似的东西:这就是它 相反。 RESB类型伪指令的操作数是a 关键表达:见3.8节。
例如:
缓冲区:resb 64;保留64字节