我正在努力寻找一种方法来检索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值不会被识别为字符。
答案 0 :(得分:0)
我不确定在2011年你想要为什么要在装配中编写整个应用程序(除非有趣是你的主要动机,编码成千上万的装配线对你来说很有趣)。
如果你这样做,你可能不想调用程序的入口点main
(在Gnu / Linux上的C中,该函数是从crt0.o或类似的函数调用的),但更可能是{{ 1}}。
如果您想了解在汇编中启动应用程序的详细方法,请阅读特定系统的Assembly Howto和Linux ABI supplement for x86-64及类似文档。
答案 1 :(得分:0)
好的我自己弄清楚了。不应将入口点称为main
,而应_start
。感谢Basile提示,+1。