1

我正在努力寻找一种方法来检索 GAS 中第一个命令行参数的第一个字符。为了澄清我的意思,我在 NASM 中是如何做到的:

main:   
    pop ebx
    pop ebx
    pop ebx            ; get first argument string address into EBX register
    cmp byte [ebx], 45 ; compare the first char of the argument string to ASCII dash ('-', dec value 45)
    ...

编辑:文字转换为 AT&T 语法并在 GAS 中编译它不会产生预期的结果。EBX 值不会被识别为字符。

4

2 回答 2

0

我不确定你为什么要在 2011 年用汇编代码编写整个应用程序(除非乐趣是你的主要动机,并且编写数千条装配线对你来说很有趣)。如果这样做,您可能不想调用程序的入口点main(在 Gnu/Linux 上的 C 中,该函数是从 crt0.o 或类似名称调用的),但更可能是start.

如果您想了解在汇编中启动应用程序的详细方法,请阅读Assembly HowtoLinux ABI 补充 for x86-64以及您特定系统的类似文档。

于 2011-10-25T17:52:15.137 回答
0

好的,我自己想通了。不应调用入口点main,但应调用_start. 感谢 Basile 的提示,+1。

于 2011-10-26T18:04:00.397 回答