Joh*_*ohn 5 windows x86 assembly nasm
我尝试在 NASM 的 BSS 部分创建一个变量:
section .bss
i DD 12345
Run Code Online (Sandbox Code Playgroud)
但是当尝试创建目标文件时,我收到以下警告:
warning: attempt to initialize memory in BSS section `.bss': ignored
Run Code Online (Sandbox Code Playgroud)
我想这是可以理解的,因为 BSS 部分只能包含未初始化的变量。所以我尝试了以下操作:
section .bss
i DD 0
Run Code Online (Sandbox Code Playgroud)
但我仍然收到同样的警告。
使用RESB和朋友。请参阅nasm 手册:
3.2.2 RESB 和朋友:声明未初始化的数据
RESB、RESW、RESD、RESQ、REST、RESO、RESY 和 RESZ 设计用于模块的 BSS 部分:它们声明未初始化的存储空间。每个都采用一个操作数,即字节数、字数、双字数或要保留的任何内容。如 2.2.7 节所述,NASM 不支持通过编写 DW ? 来保留未初始化空间的 MASM/TASM 语法。或类似的事情:这就是它所做的。RESB 类型伪指令的操作数是一个关键表达式:参见第 3.8 节。
例如:
Run Code Online (Sandbox Code Playgroud)buffer: resb 64 ; reserve 64 bytes
| 归档时间: |
|
| 查看次数: |
7081 次 |
| 最近记录: |