linux - IA 32 读取命令行参数

标签 linux assembly command-line x86

我正在尝试使用 IA 32 的汇编代码读取命令行参数。我在这里找到了如何执行此操作的解释 http://www.paladingrp.com/ia32.shtml .我可以使用堆栈指针来获取参数的数量,但无法获取参数的值。 这是我正在尝试做的事情:

movl 8(%esp), %edx  # Move pointer to argument 1 to edx
movl (%edx), %ebx   # Move value of edx to ebx
movl $1, %eax       # opcode for exit system call in eax
int $0x80           # return

我得到的指针是否正确?如果是这样,我如何获得它的值(value)?如果不是,我如何获得正确的指针?

最佳答案

movl (%edx), %ebx # Move value of edx to ebx

这不会将 EDX 的值移动到 EBX(注释不正确)。

解引用 EDX 中的指针,并将解引用的结果放入EBX。因此,如果您使用 ./a.out foo 调用您的程序,则 EBX 最终将成为 0x006f6f66 (== '\0oof' ("foo\0 “在小端))

我猜这不是您想要的,但您的问题并不清楚您希望在哪里发生什么。

关于linux - IA 32 读取命令行参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8328025/

相关文章:

fnctl(F_SETOWN, <pid>) 能否将信号定向到 pthread ID 而不是进程 ID?

Linux 核心转储回溯丢失的帧

c - 不使用 ebp 实现堆栈回溯

linux - 如何生成可在文档查看器中使用的纯文本源代码 PDF 示例?

python - 将文件夹从服务器(Linux)复制到python中的本地机器(windows)

linux - 为什么这个脚本运行不正常?

c - ARM 汇编 memcpy 等价物

c - 在进行除法乘法时,额外的移动会以某种方式更快吗?

linux - Netbeans 7.1 内置终端命令

linux - 为什么 "which cp | ls -l "不被视为 "ls -l $(which cp)"?