以下のCをx86_32のアセンブラに落とすと下記の様になるのですが、アセンブラのアセンブラ指令の
.zero 4の意味ですが、
ここはCでは8バイトのdwordにデータ12345Lを入れているので、最初の4バイトに.longで12345を入れて、後の4バイトに.zero 4で0を入れているという理解で良いのでしょうか?webを検索してみたのですが、アセンブラ指令で.zero nを説明してくれているサイトが見つかななかったのですが、良いサイトがある場合は、教えて下さい。
(C言語)
1 /* Program ex3-75.c */
2 //#include <stdio.h>
3
4 union un_def {
5 struct st_def {
6 int dn;
7 int up;
8 } word;
9 long dword;
10 }un_dat = {12345L};
11
12 int main() {
13 //printf("%ld\n", un_dat.dword);
14 un_dat.word.dn = 123;
15 un_dat.word.up = 456;
16 //printf("%d %d\n", un_dat.word.dn, un_dat.word.up);
17 }
(x86_32アセンブラ)
1 .file "ex3-75.c"
2 .text
3 .globl un_dat
4 .data
5 .align 4
6 .type un_dat, @object
7 .size un_dat, 8
8 un_dat:
9 .long 12345
10 .zero 4
11 .text
12 .globl main
13 .type main, @function
14 main:
15 .LFB0:
16 .cfi_startproc
17 pushl %ebp
18 .cfi_def_cfa_offset 8
19 .cfi_offset 5, -8
20 movl %esp, %ebp
21 .cfi_def_cfa_register 5
22 movl $123, un_dat
23 movl $456, un_dat+4
24 movl $0, %eax
25 popl %ebp
26 .cfi_restore 5
27 .cfi_def_cfa 4, 4
28 ret
29 .cfi_endproc
30 .LFE0:
31 .size main, .-main
32 .ident "GCC: (Debian 8.3.0-6) 8.3.0"
33 .section .note.GNU-stack,"",@progbits
No.3ベストアンサー
- 回答日時:
gccが使っている gas (GNU assembler)ですね。
公式リファレンスに説明があります。
https://sourceware.org/binutils/docs/as/index.html
.zeroのページは、https://sourceware.org/binutils/docs/as/Zero.html
一般に、公式リファレンスのURLは、Wikipeaiaで調べると、
(今回は https://ja.wikipedia.org/wiki/GNU%E3%82%A2%E3%82 … )
その最後の方の外部リンクに載ってます。公式リファレンスがあればですが。
No.2
- 回答日時:
ほそく.
「8バイトのdwordにデータ12345Lを入れている」のところ, どうして「『8バイトのdword』に『データ12345L』を入れている」と解釈した?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
c言語
-
Windows Formアプリからコンソ...
-
0 == False はいいけど
-
gccを行ってもexeファイルが生...
-
C#でログファイルにファイルパ...
-
だれがとけるの?
-
C言語です
-
C言語 バッファについて。
-
プログラムの実行時に'<'でリダ...
-
c++でテンプレートのコードでわ...
-
Notepad++の関数リスト表示の変...
-
VisualStudio2022でC言語プログ...
-
写真のプログラムは、1からnま...
-
C言語で、変数名を引数として渡...
-
【C言語】全角文字の配列を、全...
-
const char** p;のとき、free(p...
-
今ってプログラミング言語は何...
-
次の記述について
-
C#でTreeViewのCheckBoxのサイ...
-
逆コンパイルと逆アセンブルの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
大量のデータを読み込んで表示...
-
パソコン
-
Windows Formアプリからコンソ...
-
c言語
-
【C言語】全角文字の配列を、全...
-
10進数からN進数に変換するプロ...
-
今ってプログラミング言語は何...
-
c言語でイベントフラグを使った...
-
C#でログファイルにファイルパ...
-
gccを行ってもexeファイルが生...
-
VisualStudio2022でC言語プログ...
-
c#のTLS1.2での通信について
-
const char** p;のとき、free(p...
-
VisualStudioでC++クラスを追加...
-
逆コンパイルと逆アセンブルの...
-
[C言語]fputsとfprintfの違い
-
ArduinoでMouse関数を使用して...
-
C++でデスクトップGUIアプリ開...
-
int16_t の _t は何?
-
VisualStudioで、コードを印刷...
おすすめ情報