質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.51%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

1回答

1791閲覧

アセンブラについての質問です

cch4n

総合スコア15

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2018/05/16 16:04

AMD64 ATT表記で逆コンパイルについてなのですが
main関数から高級言語を予想する問題について

ループ個所において

4003ee: 89 c1 mov %eax,%ecx 

4003f0: 48 ff c0 inc %rax           

4003f3: 80 7c 02 ff 00 cmpb $0x0,-0x1(%rdx,%rax,1)  

4003f8: 75 f4 jne 4003ee <main+0x2e>               

1 %eaxを%ecxへ()

2 %raxをインクリメント

3 0と(rdx - 1 + (edx * 1))を比較 zfフラグ決定  

4 zf=0でループ上へ              だと解釈しているのですが、

%rdxにこれより前に64bit引数で不明な数値が入っており
1の段階でeaxには0がはいってます。(たぶん)

そうするとこのループは1,2が3に影響を及ぼさないと考えてしまいました。
しかしそうするとrdxの32bitから64bitには0でrdx=edxと考えているのですが、間違ってそうでしょうか・・・。

宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

cmpb $0x0,-0x1(%rdx,%rax,1)  

0と(rdx - 1 + (edx * 1))を比較

じゃなくて

0と(rdx - 1 + (rax * 1))を比較

だと思います。つまり

このループは1,2が3に影響を及ぼさない

及ぼすと思います。

投稿2018/05/16 16:30

KSwordOfHaste

総合スコア18392

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cch4n

2018/05/18 01:02

ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.51%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問