-sフラグを使ってgccが生成したアセンブリコードを見ています。いくつかのステートメントは次のようになります。こここのアセンブリ文は何を意味しますか?
movl is_leader(%rip), destination
、 is_leader は、CコードでタイプINTのグローバルに定義された変数です。私が理解できないのは、用語is_leader(%rip)ここです。 rip命令ポインタはありませんか?私はこのステートメントがアクセスするためにどのように使用されるのかを知る必要がありますis_leader。
OKですが、どのように機能していますか? – MetallicPriest
現在の命令のアドレスとオブジェクトのアドレスとの差を命令ポインタに加算または減算するコードを生成するようにアセンブラに要求します。これは絶対アドレスを生成せずにオブジェクトのアドレスを与えます(一般に、オフセットは16または32ビットに収まるため、結果として得られるコードも短く高速です)。 –
これは正しい答えです。これは[AMD64](http://en.wikipedia.org/wiki/X86-64#Architectural_features)命令セットの機能です。 – Caleb