如何在NASM的BSS部分创建变量?

时间:2015-01-12 20:01:36

标签: windows assembly x86 nasm

我试图在NASM的BSS部分创建一个变量:

section .bss
    i DD 12345

但是在尝试创建目标文件时,我收到了以下警告:

warning: attempt to initialize memory in BSS section `.bss': ignored

我认为这是可以理解的,因为BSS部分只能包含未初始化的变量。所以我尝试了以下方法:

section .bss
    i DD 0

但我仍然得到同样的警告。

1 个答案:

答案 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字节