我有一个基本的asm程序,用于检查字符串是否是数字。我在代码中添加了从命令行参数中读取的内容,并将其保留为seg错误。从x86 asm访问linux命令行参数的问题
如果我读的是正确的,这应该得到传递给程序的参数的数量,它应该存储在0(%ebp)中。我究竟做错了什么?
代码的安全性可以在这里找到:http://pastebin.com/kGV2Mxx4 问题是_start的前3-5行。
查看lscpu的输出,我有一个i868 cpu。虽然它说它可以在32位和64位操作。我正在运行32位Linux(Arch linux x86)
我修复了这个问题。我做了两个流行的,一个绕过程序名称,另一个获得第一个参数。更新后的代码可以在这里找到:http://pastebin.com/xewyeHYf
有人能告诉我为什么我不能只是做到以下几点:
pushl 8(%ebp)
或
movl 8(%ebp), %eax
向我们显示您的代码。我们不是全能的。 – 2013-02-23 00:21:32
您确定您使用的是32位Linux吗? – 2013-02-23 00:57:12