Assembly 如何访问程序集中的bss节

Assembly 如何访问程序集中的bss节,assembly,x86-64,Assembly,X86 64,我正在尝试写/读bss部分,我不知道为什么它总是说main有未定义的引用?这是我的代码:我只是想了解如何访问bss部分,仅此而已 .global _start .bss .lcomm data, 8 .text _start: movq $5, data 这就是错误: Build log: [06:27:57] Build started... [06:27:58] Warning! Errors have occurred in the build: /tmp/SASM/prog

我正在尝试写/读bss部分,我不知道为什么它总是说main有未定义的引用?这是我的代码:我只是想了解如何访问bss部分,仅此而已

.global _start

.bss
.lcomm data, 8

.text
_start:
    movq $5, data
这就是错误:

Build log:
[06:27:57] Build started...
[06:27:58] Warning! Errors have occurred in the build:
/tmp/SASM/program.asm: Assembler messages:
/tmp/SASM/program.asm: Warning: end of file not at end of a line; newline inserted
/tmp/SASM/program.o: In function `_start':
(.text+0x0): multiple definition of `_start'
/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/crt1.o:(.text+0x0): first defined here
/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/crt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
collect2: error: ld returned 1 exit status

这与您的
.bss
无关。它表示未定义对
main
的引用,因为您使用了
gcc
链接,并且默认情况下需要一个C风格的程序,其中入口点是
main
而不是
\u start
。所以改名吧。PS:
.lcomm
自动切换到
.bss
,您不需要显式地写出它。PPS:您知道您的程序没有尽头,会崩溃,对吗?如果您切换到
main
,您可能希望在末尾添加
ret
。请不要发布文本图片!我已对您的问题投了否决票,一旦您将图片替换为文本错误消息,我将收回我的否决票。@fuz抱歉!我认为粘贴跟踪就可以了。我不再重复了。有关为什么这是一个问题以及为什么人们关心这个问题的解释,请参阅。图像不会被搜索引擎索引,对于使用屏幕阅读器的盲人用户来说是不透明的。一些公司防火墙会阻止imgur。