assembly 如何在程序集AT&T的.bss部分声明一个初始化为零的向量?[duplicate]

yxyvkwin  于 2022-11-13  发布在  其他
关注(0)|答案(1)|浏览(192)

此问题在此处已有答案

How do I leave memory uninitialized in GNU ARM assembly?(2个答案)
26天前关闭。
我想在.bss段中声明一个向量,但我不确定如何做。我希望向量有30000个字节。
我曾试图把一些C代码编译成汇编,但我不太明白生成的代码是如何工作的,结果是:

.bss
.align 32
.type   v, @object
.size   v, 2000
v:
    .zero   2000
    .section    .rodata

我不是很明白所有的说明。

iyfamqjs

iyfamqjs1#

.bss
.align 32
.type   v, @object
.size   v, 2000
v:
    .zero   2000
    .section    .rodata

.bss声明以下语句将描述bss部分的一部分。
.align 32声明此地址应对齐到32字节。这样做是为了正确构建RAM并防止一些未对齐问题。

.type   v, @object
.size   v, 2000

这些声明了v对象的大小和类型。大小被声明为2000。

v:
    .zero   2000

这是空间的实际分配。.zero 2000分配由v标签所指向的2000字节的归零存储器。
通过这些,您可以执行以下操作:

.bss
abc:
    .zero 30000

以最基本的方式分配30000字节。

相关问题