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構文への文字通りの変換とGASでのコンパイルは、期待される結果を生成しません。EBX値は文字として認識されません。

4

2 に答える 2

0

2011年に、アプリケーション全体をアセンブリでコーディングする理由がわかりません(楽しみが主な動機であり、何千もの組立ラインをコーディングすることが楽しい場合を除きます)。その場合、プログラムのエントリポイントを呼び出したくないでしょうmain(Gnu / LinuxのCでは、その関数はcrt0.oなどから呼び出されます)が、おそらくそうstartです。

また、アセンブリでアプリケーションを起動する詳細な方法を理解したい場合は、アセンブリのハウツーx86-64用のLinux ABI補足、および特定のシステムに関する同様のドキュメントをお読みください。

于 2011-10-25T17:52:15.137 に答える
0

わかりました、私はそれを自分で理解しました。エントリポイントは呼び出されるべきではありませんがmain_start。ヒントをくれたBasileに感謝します。+1。

于 2011-10-26T18:04:00.397 に答える