Clang/LLVM(Apple LLVMバージョン6.1.0(clang-602.0.49) 対象:x86_64-apple-darwin14.3.0)でコンパイルすると、以下のCコードが出力されます。私は実際にC標準私はラベルを作る方法があるかどうかを知りたいのですが、そこから-8バイトのオフセットが自分の選択した別のクワッドワードがあるようにします。私はそれをMac OS XとLinuxで動作させたいと思います。__DATAラベルの相対アドレスについて保証はありますか?
#include<stdio.h>
long long x = 22;
long long y = 33;
int main(void) {
long long diff = *(&y - 1);
printf("%lld\n",diff);
}
とDATAセクションの関連部分があります。
.section __DATA,__data
.globl _x ## @x
.align 3
_x:
.quad 22 ## 0x16
.globl _y ## @y
.align 3
_y:
.quad 33 ## 0x21
グローバルセクションはスタックでもヒープでもないデータセクションに移動しますか? –
ああ、ありがとう。私の答えを修正しました。 – kcraigie
アセンブラは、そのようなデータセクションに配置されている場合は、アセンブラはそれぞれのすぐ隣に置かれますか? –