这将是非常具体的,但我很好奇。 我有一个 A.asm 文件和一个 B.asm 文件。
在A.asm中有:
global nodeNum
section .data
; reading consts
cmdNum equ 9
cmdSize equ 5
; tree consts
nodeNum equ 8
现在,在 B.asm 中:
extern nodeNum
section .bss
t1 resb 1
t2 resb 5*nodeNum
treevptr resd 1
组装此代码会出现“尝试在 BSS 空间中保留非常量数量”错误。
我的问题是:
equ
将常数与标签关联起来,那么为什么会出现这个错误呢?t1 resb 1
t2 resb (1*nodeNum + 1*nodeNum)
treevptr resd 1
它组装没有错误,但
nodeNum
为0,所以t1+1
变得与treevptr
相同。
为什么它在这里组装而不是在前一种情况下组装?
我也遇到了类似的问题。 我使用带有 %define 指令的预处理器:
%定义 BUFFLEN1 500
...
.bss 部分
我的缓冲区:resb BUFFLEN1