【发布时间】:2013-02-08 17:35:17
【问题描述】:
我有一个基本的 asm 程序来检查字符串是否为数字。我正在添加代码以从命令行争论中读取,让它不断出现段错误。
如果我读的是正确的,这应该得到传递给程序的参数数量,它应该存储在 0(%ebp) 中。我做错了什么?
完整的代码可以在这里找到:http://pastebin.com/kGV2Mxx4 问题是_start的前3-5行。
在查看 lscpu 的输出时,我有一个 i868 cpu。虽然,它说它可以在 32 位和 64 位下运行。我正在运行 32 位 linux (Arch linux x86)
我解决了这个问题。我做了 2 次弹出,一次绕过程序名称,下一次获得第一个参数。更新后的代码可以在这里找到:http://pastebin.com/xewyeHYf
谁能告诉我为什么我不能只做以下事情:
pushl 8(%ebp)
或
movl 8(%ebp), %eax
【问题讨论】:
-
向我们展示您的代码。我们并非无所不知。
-
您确定您使用的是 32 位 Linux?
标签: linux assembly x86 command-line-arguments