アセンブリ命令と命令セットアーキテクチャの違いとは?

このQ&Aのポイント
  • アセンブリ命令と命令セットはほぼ同じ言葉であり、プロセッサの内部動作を詳しく解析する際に重要な概念です。
  • 命令セットアーキテクチャは、プロセッサ内部の仕様であり、特定の命令セットに基づいてプロセッサが動作するしくみを規定します。
  • ジャンプ命令を例にとると、命令セットアーキテクチャはプログラムカウンタのデータを変えるしくみを規定しています。
回答を見る
  • ベストアンサー

アセンブリ命令、命令セットアーキテクチャ等の用語

ソフトウェア中心の技術者です。 コンパイラからアセンブリ言語を吐き出させ、そこからプロセッサ内部の動作を詳しく解析していたいと思っています。そうしたところ、先輩から「そういうことなら、命令セットアーキテクチャを勉強するといいよ」、とアドバイスをもらいました。 ここで質問なのですが、 1 「アセンブリ命令」と「命令セット」とはほぼ同じ言葉だと思って差し支えないでしょうか? 2 また、「命令セットアーキテクチャ」とは、「決定した命令セットから成るプロセッサ内部の仕様」と思って良いのでしょうか? 例えば、ジャンプ命令を受けたときには、構造的にどのようなしくみでプログラムカウンタのデータを変えるか、とかを規定したしくみそのものと理解していますが、それで正しいでしょうか?  以上、よろしくお願いします。

  • g47040
  • お礼率55% (125/226)

質問者が選んだベストアンサー

  • ベストアンサー
  • tadys
  • ベストアンサー率40% (856/2135)
回答No.1

現在のプロセッサの動作は極めて複雑になっておりアセンブリレベルで眺めてもその具体的な動作は理解できません。 これを参照  http://d.hatena.ne.jp/hyoshiok/20070916#p1 そこまで複雑でないものでもジャンプ命令の先読み動作とか、キャッシュのヒットミスによる動作などはデータや他のプロセスなどに依存して変化します。 アセンブリ言語から動作を理解するのであれば、最初はPICマイコンやAVRマイコン辺りから始めるのが良いでしょう。 取りあえず、ここでも読んでください。 http://www.picfun.com/cpuframe.html >1 「アセンブリ命令」と「命令セット」とはほぼ同じ言葉だと思って差し支えないでしょうか まあそうです。 「アセンブリ命令」には「命令セット」に含まれない「疑似命令」等が含まれます。 >2 また、「命令セットアーキテクチャ」とは、「決定した命令セットから成るプロセッサ内部の仕様」と思って良いのでしょうか?  そう思ってよいでしょう。

g47040
質問者

お礼

ご回答ありがとうございます。 どこまでを理解していて、どこからが理解できていないのか、tadysさんの回答にてはっきりさせることができました。 ありがとうございました。

関連するQ&A

  • 命令セットアーキテクチャとは?

    学校の授業で命令セットアーキテクチャという言葉がでてくるのですが、 意味としてはHWと低レベルSWとのインターフェースとかかれているのですが、 ようするになんですか?どんな命令を組み合わせてるかの構造、 というただそれだけの意味なのでしょうか?よくわかりません。 お願いします。

  • 命令セットについて

    インテルのアセンブリ言語の命令セットとMIPSの命令セットの構成の違いを詳しく教えて下さい(*_*) お願いします★

  • アセンブリでプログラムの高速化をするには

    アセンブリレベルでのプログラムの高速化ができるようになりたくて、アセンブリを勉強し始めた者です。 質問なのですが、CPUは新しくなるにつれて命令が増えたり、製品によって微妙に違ったりしますよね。そういうCPUの命令の種類を知るにはどう調べたらいいのでしょうか?「core 2 アーキテクチャ」等と調べてみましたが、思うような情報が出てきません。CPUの仕様書みたいな物がメーカーから配布されていたりしますか? また、もし「Windowsパソコンで超高速に処理を行うコンポーネントを作ろう!」と思ったら、Windowsパソコンで使われている様々なCPU(coreとかPentiumとかAMDのCPUとか)に合わせてアセンブリ(アセンブリが対応していない場合は機械語)や命令セットを知り、CPUに特化したプログラムを書いていかなければならないでしょうか。CPUは本当に種類が多いので、それは死ぬほど大変なような気がします。それとも、CPUにはある程度の互換性があって、そこまで細分化してプログラムを書く必要はないですか? 質問は上記の2つです。回答よろしくお願いします。

  • アセンブリ言語は原始プログラムですか?

    質問(1) アセンブリ言語というのは、 add $S1, $S2 みたいなやつですよね? wikipediaで「ソースコード(ソースプログラム、原始プログラム)」の注釈1,2を読むと、 注1:【機械語の命令に記述するアセンブリ言語(アセンブラ)が存在するが、このアセンブラ用の文字列で記述されたプログラムはソースコードとは呼ばれないのが普通である。】 注2:【アセンブリ言語で書かれたプログラムはソースコードと呼ばれない】 と書かれてあります。 でも、 他の教材では アセンブリ言語で書かれたプログラム(原始プログラム) と書かれています。 どっちが正しいのでしょうか? 質問(2) 目的プログラム(オブジェクトプログラム)とは、 IT用語辞典によると 【オブジェクトプログラムとは、ソースプログラム(人間が認識できるプログラム言語で高水準言語など?)をコンパイラで機械語に翻訳したプログラムのことである】 とありますが、 ソースプログラムをコンパイラで翻訳するとアセンブリ言語になるんではないのですか? そのアセンブリ言語をアセンブラで翻訳して機械語になるのではないのでしょうか? どなたかご教授ください。 お願いします。

  • デバッグ<命令の無効化>

    ソフトを起動する度に表示されるタイトルロゴや 使用上あまり必要の無い部分を機能させないようにしたいと思い 逆アセンブルをして解析を始めたのですが 必要の無い命令を無効にするにはどうしたらいいのでしょうか? 例えば :0047D3EA push 000055F2 のようなダイアログ呼び出し(?)の命令があったとして このダイアログの表示は必要無いので表示させないようにしたい この場合どの様にして書きかえればよいのでしょうか? バイナリエディタ等で開き書き換えるのだと思いますが どのようにしてよいのかわかりません また、ソフトウェア改造の違法性についても知っている方教えて下さい アセンブリ言語初心者ですので質問に意味不明なところがあるかもしれませんが そのへんもフォローしてお願いします

  • CISCとRISCの移植性について

    こんにちわ. CISCとRISCの基本的な違いについては調べればいくつものサイトが出てくるのですが,移植性について根本的に分からないことがあったので質問させていただきます. CISCは複雑な機能をハードウェア(命令セットアーキテクチャ)で実現し,RISCは単純な命令セットで複雑な機能はソフトウェアで任せるためCISCのほうが移植性が高いと言われています. 移植性が高いとは,既存のソフトウェアを変更する必要がなく新しい機種に移行できるという意味ですが,そもそもRISCもCISCも最終的には用意された命令セットアーキテクチャを使用していることには代わりがないので,単純にその命令セットが変更しなければどちらも移植が可能な気がします. そうなると,単純な命令セットしか使用しないRISCのほうがその分変更が少ないので移植性がむしろ高いと思うんですが,実際はそうではありません. ソフトウェアで実現とは,コンパイラとOSのことを指すと思うのですが基本的にこれらが提供する機能に変更がなければ既存のソフトウェアは動くと思うんです.なのでこれらのコンパイラとOSがそれらの機能を実現するために使用する命令セットさせ変更がなければ良いと思うのですが…全く分かりません. どなたか教えて頂けないでしょうか? 宜しくお願いします. ちなみに教科書以外に以下のサイトを参考に調べていました. http://www.atmarkit.co.jp/fsys/zunouhoudan/027zunou/end_of_risc.html

  • ハードウェアアーキテクチャ?

    ハードウェアアーキテクチャ? プログラムがコンピュータで実行されるまでの筋道が知りたいです。 C言語を勉強していたのですがmalloc();などの動的メモリの部分や #pragmaを使って変数のパッキングを弄る方法、部分的にアセンブラ命令を書いて処理を軽くするインラインアセンブラなどのテクニック、 レジスタ上にメモリを確保するregisterをつけて変数を宣言する方法など、ハードウェアに近い根幹的部分のほうを知りたいです。 メモリにしろヒープ領域とスタック領域があるだとかC言語の入門書には載っていないことがよくあります。 CPUの仕組みや、メモリの動作や、根本的なことが知りたいです。 このようなハードウェア寄り?なことを専門に扱っているHPや本などありましたら教えてください。

  • EXEファイルって何ですか?

    exeファイルっていったいどんな仕組みでソフトを起動させているのでしょうか? コンパイラでアセンブリ言語の状態になっているのがexeファイルなんでしょうか?

  • 日本にIBMのような会社がない理由

    なぜ日本にはIBMやOracle(元を辿ればSun)、あるいはIntelやAMD、ARMのように、プロセッサ(命令セット)やハードウェアアーキテクチャを設計して本家、大元となった会社がないのでしょうか? 大元となる命令セットやアーキテクチャを日本で作って、他の企業が調達したり、ライセンスを受けて互換品を作るという状況にはできなかったのでしょうか? 日本も、半導体の工場(Fab)がありますよね。

  • CPU

    最近のCPU(Athron64,core i7等)は64bit対応となっておりますが、これは本当にプロセッサの内部動作やALU等が64bitなのでしょうか?それとも実際の内部動作やアーキテクチャは32bitでありながら、仮想的に64bitアーキテクチャ(64bitのマイクロコード命令を持たせているだけ)を構成しているのでしょうか?ちょっと単語の使い方が厳密性にかける質問で申し訳ないのですが、ご教授のほどよろしくお願いいたします。