我有这个 C 程序。
#include<stdio.h>
char arr[65];
int main()
{
return 0;
}
当我使用以下命令编译它gcc
时:linux
gcc -Wall -save-temps arrNewGlobal.c -o arnewGlobal
我得到以下汇编代码。
.file "arrglobal.c"
.comm arr,65,32
.text
.globl main
.type main, @function
..........
根据as
文档,.comm 分配了大小为 65 的未初始化内存块,对齐为 32 位(这意味着地址将有 5 个最低有效位等于 0)
我不明白的是,这个地址是否意味着这个内存块的起始地址,或者这个内存的每个字节应该有 5 个最低有效位等于 0 的地址(就像每个字节地址都会跳转)
也只是为了确保这个地址不是物理地址,而是一个虚拟地址?