gpt4 book ai didi

c - 不使用 glibc 从 main() 返回值

转载 作者:太空宇宙 更新时间:2023-11-04 01:34:32 26 4
gpt4 key购买 nike

在没有 GLIBC 的情况下进行编译时,我试图从 main() 返回一个值,但它不起作用。让我在互联网上找到这个例子:

[niko@localhost tests]$ cat stubstart.S 
.globl _start

_start:
call main
movl $1, %eax
xorl %ebx, %ebx
int $0x80
[niko@localhost tests]$ cat m.c
int main(int argc,char **argv) {

return(90);

}
[niko@localhost tests]$ gcc -nostdlib stubstart.S -o m m.c
[niko@localhost tests]$ ./m
[niko@localhost tests]$ echo $?
0
[niko@localhost tests]$

现在,如果我用 GLIBC 编译,我会得到很好的返回值:

[niko@localhost tests]$ gcc -o mglibc m.c
[niko@localhost tests]$ ./mglibc
[niko@localhost tests]$ echo $?
90
[niko@localhost tests]$

所以,显然在 stubstart.S 中返回没有正确完成,我该如何正确处理? (仅限 Linux)

最佳答案

因为您没有将 main() 的返回值提供给 _exit()

如果你这样做:

.globl _start

_start:
call main
movl %eax, %ebx
movl $1, %eax
int $0x80

您将返回值从 eax 保存到 ebx,这是预期的退出代码。

关于c - 不使用 glibc 从 main() 返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16876016/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com