用GNU连接器ld,不会连接,求指导

学习汇编知识,在连接的时候出问题

文件名是cpuid2.s,具体代码如下

#cpuid2.s View the CPUID Vendor ID string using C library calls
.code32
.section .data
output:
    .asciz "The processor Vendor ID is '%s'\n"
.section .bss
    .lcomm buffer,12
.section .text
.globl _start
_start:
    movl $0, %edi
    cpuid
    movl $buffer, %edi
    movl %ebx, (%edi)
    movl %edx, 4(%edi)
    movl %ecx, 8(%edi)
    pushl $buffer
    pushl $output
    call printf
    addl $8, %esp
    pushl $0
    call exit

gcc version 9.3.0,Ubuntu20.0版64位

按照书上的描述,ld连接标准的C动态库libc.so,32位Linux的动态加载器程序是ld-linux.so.2

用ldd命令查找后,我的系统是Ubuntu20.0版64位,标准的C动态库是libc.so.6,动态加载器程序是ld-linux-x86-64.so.2

用ld命令连接后,发现运行程序时,发生段错误

搞不懂为啥会发生段错误。而且用ulimit -s命令提高stack size,也不行

求大神指导下。

啥意思?

做了啥?麻烦说下。