以下の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で質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) x86_32のGASの擬似命令 3 2023/06/07 19:55
- C言語・C++・C# スタックフレームの消滅 6 2023/05/20 12:33
- その他(プログラミング・Web制作) google formsを使ったタスク依頼フォーム作成におけるご相談 1 2023/06/22 15:55
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- MySQL MYSQL エラー 2 2022/10/18 11:37
- UNIX・Linux Linuxについて質問です。 以下のような設定をしたMakefileを作成するにはどう記述すればよい 1 2023/02/03 20:10
- C言語・C++・C# Cのオブジェクトファイルの逆アセンブル 5 2023/05/13 01:51
- フランス語 フランス語フレーズの意味 1 2022/10/26 18:17
- その他(プログラミング・Web制作) pandasでまとめてインデックスを削除するにはどうすればいいですか? たとえば、以下のプログラムで 1 2022/07/31 23:09
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
逆コンパイルと逆アセンブルの...
-
C言語について。
-
これて逆じゃないですか?
-
C言語について。
-
コンソールアプリを作成するの...
-
私は
-
C言語 1から20までの逆数の和を...
-
Windows Formアプリからコンソ...
-
プログラムの実行時に'<'でリダ...
-
パソコン
-
あんまり考えたくないけど
-
10進数からN進数に変換するプロ...
-
バッチファイルで以下のような...
-
c#のTLS1.2での通信について
-
だいがくの電し書籍で
-
VisualStudio2022でC言語プログ...
-
VisualStudioでのプログラミン...
-
C言語って古いですか?
-
ホワイトハッカーを目指そうか...
-
【C言語】全角文字の配列を、全...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラム言語について c言語...
-
C#でログファイルにファイルパ...
-
Python、プログラミングについ...
-
バッチファイルで以下のような...
-
プログラミングの課題がわから...
-
だれがとけるの?
-
0 == False はいいけど
-
CPUが16bitでも32bitOSでコンパ...
-
なんで
-
c++でテンプレートのコードでわ...
-
プログラマーです。このDB設計...
-
c言語のリダイレクトによる円...
-
プログラミングでArduinoのc++...
-
大量のデータを読み込んで表示...
-
応用情報技術者試験の令和元年...
-
複素関数はどこはあんまりやら...
-
gccを行ってもexeファイルが生...
-
c言語
-
swift言語の最適化 swift最適化...
-
VisualStudio2022でC言語プログ...
おすすめ情報