• 締切済み

逆アセンブラでよく使われる主な命令の種類について

逆アセンブラとかでよく使われる主な命令の種類を挙げてください。 ネットで検索すると命令の種類が沢山ありすぎて、全て覚えるのが大変で、かつ、どの命令が良く使うものなのかわからないので、よく使われる主要なもののみの命令(オペコード等)の種類を教えてください。 よろしくお願いします。

みんなの回答

回答No.3

>その逆アセンブラの命令に関してはどこにありますか? もしかして、ニーモニックのことを聞いていますか? あえて、Z80での説明をしてみます。 何とか.asm ld a,50 これが、アセンブルされると 3e 32 となり、それを「逆アセンブル」すると ld a,50 なので、アセンブル前と、逆アセンブル後は「ニーモニック」です。 ですので、質問の回答は、 >その逆アセンブラの命令に関してはどこにありますか? が質問ですので、対象となるCPUのニーモニック表が 答えとなりますよ。 例えばこんな感じ http://tomocyan.net/~kagurazaka/html/op_code_01.html CPUの名前と、「命令表」などで、検索すればいろいろ出ますが。 CPUそのものも、世の中にたくさんあり、お使いのCPU名が ないと、全くの無意味な情報にもなりえます。 「x86というCPUでアセンブルしたいのに、手元の資料がARMだなど」 これでは、意味がないという意味になります。 また、アセンブラは、実質全部覚えないと、ややきついことは 確かです。(ただ、それだけ単純な命令形態をしていることも確かですが) 私個人は、アセンブラが一番簡単な言語だと思ってるのですが、 今の人は逆に感じるかもしれません。(そこはそれぞれですね) ってのが、私なりの回答ですね。

  • ballville
  • ベストアンサー率47% (233/487)
回答No.2

さきほど回答したとおり、逆アセンブルするなら、すべての命令を覚えなければなりません。「全て覚えるのが大変」なら、出コンパイルして高級言語で見るしかないです。 参考に挙げたサイトは高級言語だけでなくアセンブリ語表示もできます。つまり逆アセンブラ機能もあります。さらに、ルーチンごとのコール関係を図示できるので、プログラムの構造を理解する助けにもなります。 アセンブラの命令自体は、CPUにより異なっていますので、知りたいCPUの型番などで検索すれば一覧を見ることができると思います。 メジャーなCPU(X86とか68Kなど)なら、入門書もたくさんあるし、WEB上にも情報がたくさんあります。 CPU名+「 オペコード」などで検索すればたくさんヒットすると思います。

  • ballville
  • ベストアンサー率47% (233/487)
回答No.1

アセンブラじゃなくて逆アセンブラ? でも「命令(オペコード)」とお書きなので、普通にマシン語の命令についての質問だという前提でお答えすると、答えは「全部」です。 自分でプログラムを作るなら、理解できているいくつかの命令だけを使ってプログラミングすることもできますが、逆アセンブルするということは、自分以外の誰かほかの人が書いたプログラムを解析するわけですから。 最もよく使われる命令というなら、移動命令(x86ならMOV)でしょうが、分岐やコール、またその条件判定などを理解していないとまったく手が出せないでしょう。 そこで、逆アセンブル結果からさらに高級言語にして見せてくれるデコンパイラを使ってみてはどうでしょう。 セキュリティソフト開発のavastがやっているオンラインのデコンパイラを紹介しておきます。 https://retdec.com/ これなら、マシン語、アセンブリ語、C言語、pythonで結果を受け取れます。

参考URL:
https://blog.avast.com/jp/avast-open-sources-its-machine-code-decompiler-0
taritarianime
質問者

お礼

>ballvilleさん 私は「デコンパイラ」について質問しているわけではありません。 その逆アセンブラの命令に関してはどこにありますか? 教えてください。 よろしくお願いします。

taritarianime
質問者

補足

>ballvilleさん 私は「デコンパイラ」について質問しているわけではありません。 その逆アセンブラの命令に関してはどこにありますか? 教えてください。 よろしくお願いします。

関連するQ&A