【发布时间】:2017-12-05 05:07:03
【问题描述】:
DB 分配 1 个字节的块。
DW 分配 2 个字节的块。
DD 分配 4 个字节的块。
DQ 分配 8 个字节的块。
所以我假设:
RESB 1 分配 1 个字节。
RESW 1 分配 2 个字节。
RESD 1 分配 4 个字节。
RESQ 1 分配 8 个字节。
我说的对吗?
documentation 不多说:
3.2.2 RESB 和朋友:声明未初始化的数据
RESB、RESW、RESD、RESQ、REST、RESO、RESY 和 RESZ 设计为 在模块的 BSS 部分中使用:它们声明未初始化 储存空间。每个都有一个操作数,即 字节,字,双字或任何要保留的东西。如部分所述 2.2.7、NASM不支持MASM/TASM写DW预留未初始化空间的语法?或类似的东西:这就是它 相反。 RESB 类型伪指令的操作数是 批判性表达:见第 3.8 节。
例如:
缓冲区:resb 64;保留 64 字节
wordvar: resw 1 ;留个言
realarray req 10 ;十个实数数组
ymmval: resy 1 ;一个 YMM 寄存器
zmmvals: resz 32 ; 32个ZMM寄存器
【问题讨论】:
-
是的,你是对的。这些文档对我来说似乎很清楚。
-
你需要想想你写了什么。
RESB 64明确表示“保留 64 个长度为 1 字节的东西” -
@David Hoelzer 是的,我注意到了这一点,但文档只清楚地说明了
resb而不是其余的。 -
我不确定文档有什么不清楚的地方。你不知道他们说“词”是什么意思吗?本节应在阅读the previous section之后阅读,因为它使用相同的类型后缀。