我有一个基本的 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