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