アプリ版:「スタンプのみでお礼する」機能のリリースについて

下記、C 言語プログラムをアセンブリ言語に変換し、そして
アセンブリ言語をアセンブルして機械語との関係を見たところ、
下記のようなアセンブル結果が得られました。

アセンブル結果についてお聞きしたいのですが、
BSS セグメント内の変数 data_one のアドレスは 0x8 バイト(0000000000000008)だが、
機械語としての表現はリトルエンディアンで逆順になって
08000000 となるということでしょうか?

BSS セグメントが存在するオブジェクトファイルは機械語で書かれているので、
0000000000000008 という表現も機械語なのだろうかと思い混乱しています

■ C 言語プログラム
#include <stdio.h>
main() {
static int data_one ;
static int data_two ;
static int data_three ;
int counter ;
data_one = 1000 ;
for (counter=0 ; counter < 5 ; counter++) {
data_two = data_one + 1 ;
data_three = data_two + 2 ;
data_one = data_one - 3 ;
}
printf("data one,two,three : %d,%d,%d \n",data_one,data_two,data_three) ;
printf("logical address of data_one : 0x%x \n", &data_one);
printf("logical address of data_two : 0x%x \n", &data_two);
printf("logical address of data_three : 0x%x \n", &data_three);
}

■アセンブル結果のリダイレクト
44 0046 A3080000 movl%eax, data_one.1931
44 00
(中略)
DEFINED SYMBOLS
sample_4_2.s:7 .bss:0000000000000008 data_one.1931

以上、お手数おかけしますがコメントいただけると嬉しいです。
よろしくお願いします

A 回答 (2件)

> DEFINED SYMBOLS


> sample_4_2.s:7 .bss:0000000000000008 data_one.1931

.bss の先頭アドレスからのオフセットでしょう。global 変数や static 宣言された変数を割り当てた仮の位置です。
丁度 64bit 表記になってる気がしますし、シンボル定義って書いてありますから。
    • good
    • 0

詳しくは知りませんが...



>BSS セグメント内の変数 data_one のアドレスは 0x...
--> (少なくとも直接な)アドレスとは思えません。余計な0が多過ぎます。

>0000000000000008 という表現も機械語なのだろうかと思い混乱しています
--> データですから有り得ないと思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!