2011-10-25 55 views
1

我很努力地找到一種方法來檢索GAS中第一個命令行參數的第一個字符。爲了澄清我的意思是我如何做到這一點在NASM:檢索氣體中的命令行參數

main: 
    pop ebx 
    pop ebx 
    pop ebx   ; get first argument string address into EBX register 
    cmp byte [ebx], 45 ; compare the first char of the argument string to ASCII dash ('-', dec value 45) 
    ... 

編輯:文字轉換到AT & T語法和氣體編譯它不會產生預期的結果。 EBX值不會被識別爲一個字符。

+0

你想使用AT&T風格的語法嗎?否則,只需使用'.intel_syntax noprefix'。 – user786653

回答

0

好吧我自己想清楚了。入口點不應該被稱爲main,而是_start。感謝Basile提供了一個提示,+1。

0

我不確定爲什麼你想在2011年爲整個程序集編寫代碼(除非有趣是你的主要動機,並且編碼數千條裝配線對你來說很有趣)。 如果你這樣做,你可能不想調用程序的入口點main(在Gnu/Linux上的C語言中,該函數是從crt0.o或類似的地方調用的),但更可能的是start

如果您想了解在程序集中啓動應用程序的詳細方式,請閱讀Assembly HowtoLinux ABI supplement for x86-64以及您的特定系統的類似文檔。

+0

這更像是一個家庭作業,我寫了一些簡單的NASM CRC5代碼。現在試圖將其轉換爲GAS。 – bvk256

+0

-1仇恨信息(只顯示你對語言的無知)問題有它的標籤,如果你不喜歡它,不要回答。 (無論如何你都不會回答這個問題) –