注:私の記憶が正しければ、これが呼び出されたサブルーチン/関数に対する引数はレジスタオペコード用のAT&T構文ポストフィックスは何ですか?
に配置されていないスタックにプッシュされて、私はアセンブリをしようとしてきたと私は望んでいた意味ので、私はBSDベースのシステムを使用しています私の単純なカーネル出口プログラムを試してみてください:
.globl _start
_start:
movl $0x20, %eax
pushl %eax
movl $0x1, %eax
subl $0x4, %esp
int $0x80
64ビットアセンブリです。
大きな違いは、プレフィックスがの32ビット標準の代わりにr
に変更されていることです。
しかし、l
が既に32ビットの長さを意味する場合、64ビットオペコードの新しいポストフィックスは何ですか?
なぜ新しいレジスタの接頭辞はですか?
また、詳しい情報がある適切なリソースがある場合。またはチュートリアル、チュートリアルは常に楽しいです。
呼び出し規約は、32ビットアプリケーションよりも64ビットアプリケーションでは異なるため、スタックではなくレジスタを使用します。詳細については、[この回答](http://stackoverflow.com/a/2538212/458390)を参照してください。 64ビットの接尾辞はクワッドワードの 'q 'です。 「r」という接頭辞はおそらくAMDが64ビット拡張を最初に作成したため、Intelは「拡張」を意味する他の文字を追加する機会を持っていなかったでしょう。 – ughoavgfhw