【问题标题】:Retrieving command line args in gas检索气体中的命令行参数
【发布时间】:2011-10-25 17:46:19
【问题描述】:

我正在努力寻找一种方法来检索 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 值不会被识别为字符。

【问题讨论】:

  • 你想使用 AT&T 风格的语法吗?否则只需使用.intel_syntax noprefix

标签: linux assembly x86 gnu-assembler


【解决方案1】:

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

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

【讨论】:

  • 这更像是一个家庭作业,我写了一些简单的NASM CRC5代码。现在尝试将其转换为 GAS。
【解决方案2】:

好吧,我自己想通了。入口点不应称为main,而应称为_start。感谢 Basile 的提示,+1。

【讨论】:

    猜你喜欢
    • 2019-01-25
    • 1970-01-01
    • 2015-04-04
    • 1970-01-01
    • 1970-01-01
    • 2017-05-25
    • 1970-01-01
    • 2013-03-29
    • 1970-01-01
    相关资源
    最近更新 更多