プロが教えるわが家の防犯対策術!

コンピュータは電圧の高い(H)と低い(L)を2進数としてCPUがクロック信号の入力を受けて処理します。 2進数はそのままだと扱いづらいので、数値的に親和性のある2のn乗進数を使います。 一般にコンピュータは1オクテットを1バイト、1ワードとしています。 その時16進数2桁で1バイトとなることから16進数表記が使われています。 なので、極論で言えば16進数2桁ではなく256進数1桁でも良かったという事です。 実は、大抵のアセンブリ言語は2進数表記を扱えます(8進数も使えるかも)。 アセンブラは16進数でも2進数でもそのまま対応するマシン語に置き換えていくものです。 アセンブリ言語とマシン語は一体一で対応しているので、実行ファイルがあれば、逆アセンブルで完全なアセンブリコードを復元出来ます。 マクロアセンブラの場合はマクロ命令までは再現されませんが、ここでは関係無いので割愛します。 つまり、マシン語とアセンブリ言語は本質的に全く同じものです。 単に、人間に読みやすく見せているものアセンブリ言語です。 マシン語もアセンブリ言語も低水準言語です。 高水準言語とは、C言語などのコンパイルを必要とするものや、BASICやJavaScriptのようにインタープリタを必要とするもののことです。 こちらは、CPUが直接解釈できるマシン語とは全く違う人間の都合に合わせた表現でコーディングし、後からマシン語に変換する仕組みのものです。 人間に読みやいコードをマシン語に変換するので、関係は一体一ではありません。 つまりコンパイルやインタープリットすると元の情報(ソースコード)は失われます。

で、① インタープリタとインタープリットとは何でしょうか?教えていただけないでしょうか?すみません。
② マクロアセンブラの場合はなぜマクロ命令が実行されないのでしょうか?教えていただけないでしょうか?すみません。
③ 実行ファイルがあれば、逆アセンブルで完全なアセンブリコードを復元出来ます。とはどういう事でしょうか?つまり、実行ファイルというのは、プログラマーが書いたソースコードのことでしょうか?教えていただけないでしょうか?すみません。

教えていただけないでしょうか?すみません。

A 回答 (3件)

①アセンブラの場合は、アセンブラ言語が単純にマシン語(0101など)に変換されるので、逆アセンブルでマシン語(0101など)からアセンブラ言語のソースを完全に復元できます。


マクロアセンブラは、プログラムの中で繰り返し使う部分に人間がマクロ名を付けて、その部分を「マクロ命令」にしているので、ソースの中にマクロ名が出て来る度に「マクロ命令」を呼び出して処理する事になります。なので、ソースの中の「マクロ名」が有るか無いか、有れば「マクロ命令」のある場所にジャンプして、そこの「マクロ命令」を実行して、実行が終了したら、先の「マクロ名」が有った次の行に戻り、処理を続ける・・・などの処理がマシン語(0101など)で生成されます。この為にこうした処理のマシン語の生成が無いアセンブラとは異なり、単純には、アセンブラ言語がマシン語(0101など)と一対一には対応しなくなるのです。
②後、/は、かっこ代わりです。「実行します。または、実行できます。」と言う事です。
    • good
    • 0

マクロアセンブラの場合は、逆アセンブルでマクロ命令までは再現されないと言う事で、マクロアセンブラで生成された実行ファイルは、マクロ命令をちゃんと正常に実行します/実行できます。

    • good
    • 0
この回答へのお礼

では、①マクロアセンブラでは、マシン語とアセンブラ言語の一対一も成り立たないという事でしょうか?逆アセンブルでは、マシン語とアセンブラ言語が一対一でなければならないという事でしょうか?②後、/は、かっこ代わりでしょうか?
すみませんが以上2点のご質問に答えていただけないでしょうか?

お礼日時:2021/06/07 07:09

インタプリタ(英: interpreter、日: 解釈系)とは、プログラミング言語で書かれたソースコードないし中間表現を逐次解釈しながら実行(英語版)するプログラムのことです。

BASICなどが該当します。BASICのプログラムにPRINTと記述されていた場合、インタプリタと呼ばれるプログラムがPRINTを逐次解釈してCPUが理解できる/実行できるマシン語を瞬時に生成して、PRINTを実行するのです。PRINTなどの命令を逐次解釈してCPUが理解できる/実行できるマシン語を瞬時に生成する事を「インタープリット」と呼びます。
https://ja.wikipedia.org/wiki/%E3%82%A4%E3%83%B3 …
マクロアセンブラとは、アセンブリ言語によるプログラムの開発効率を上げるために、マクロ機能などを追加したアセンブラのことです。 マクロ機能を活用すると、同じコードがプログラムの中の複数の場所に出現するような場合に、マクロ名を与えることで、プログラムが簡潔となり、ソースコードの可読性を向上することができます。
アセンブラは、マシン語と一対一で対応するので単純ですが、マクロアセンブラは、同じコードがプログラムの中の複数の場所に出現するような場合に、マクロ名を与えてプログラムを簡潔にしているので、処理が複雑になっています。この為にマクロ命令までは再現できないのです。
実行ファイルとは、0101が連続しているCPUが直接実行できる形式なので、人間が見ても何が何だか読み取れません。しかし、アセンブリ言語とマシン語は一体一で対応しているので、アセンブリ言語からアセンブラが生成したマシン語、つまり、0101の連続した「実行ファイル」があれば、この逆の操作の逆アセンブルで、0101の連続した「実行ファイル」から完全なアセンブリコードを復元する事が出来るのです。

 2045年にコンピューターの知能は,全世界の人間が束になって挑んても敵わなくなる,全人類の知能の総力を超える「技術的特異点/シンギュラリティ」に達するらしい。人間は脳にチップを埋め込み,スマホやPC,マウスやキーボードなどを使わず,脳の中に投影されるスクリーンの輝点を目で追うと,その脳の電気信号をチップが検出し,文字の入力やクリック/ドラッグ/ドロップなどが可能になり、人間は、常時、ネットにワイヤレスで接続し、超知能/超知性の人工知能AIと通信し、世界中の情報を操作/情報処理するでしょう。
 貴方の脳の中に8Kや16Kレベルの高解像度の映像が浮かび上がり、周囲360°に映像があり、全身を包み込む音響が感じられる状況でゲームや授業が受けられる様になれば、バーチャルの世界に沈んで行き、リアルの世界には戻って来れなくなる人も出て来るかも知れません。
 テレビ電話で貴方Aが日本語でアメリカの人Bに質問すると瞬時に流暢な英語に翻訳されBに聞こえ、Bの英語の答えは瞬時に流暢な日本語に翻訳されAに聞こえる。この瞬時の翻訳は全世界の全ての言語間で相互に可能になるでしょう。
 超知能/超知性の人工知能AIと連動した人型ロボットが、一般家庭で炊事/洗濯/掃除/育児/介護/買い出し/ゴミ出しなどを熟し、医療/法曹/建築/土木/生産/流通など全業種の全職場で働く。人間には、研究開発や芸術などの限られた仕事しか残らないでしょう。
 この超知能AIに政治/経済/教育/医療/福祉など森羅万象について最適の施策を考えてもらい、人間は素直にその施策を実行して行くしか戦争を回避する手段は無いのかも知れない。
 地球の隅々に広がり地球から溢れた人類は、無限のキャパシティを持つ最後のフロンティアである「宇宙」に向かうでしょう。それは「好奇心と拡散性」が人類の「性(さが)」だからです。

 宇宙では、何に遮られる事も吸収される事も無く、太陽の光が100%、365日24時間、太陽電池パネルに降り注ぎます。地球-月のラグランジュ点L₄,L₅や地球周回軌道上に宇宙太陽光発電所を建設し、太陽電池で作ったクリーンで無尽蔵で安価な電力をマイクロ波に変換して、地球に送信し、地球でこのマイクロ波を受信し電力に戻して利用します。

 この電力で地球のH₂Oを電気分解し、H₂とO₂を作り、このH₂で水素自動車(燃料電池自動車)のマイカー/タクシー/トラック/バスを走らせます。排出するのはH₂Oだけです。CO₂などは全く排出しません。宇宙に降り注ぐ太陽の光で全ての自動車が走る「水素社会」が到来します。
https://www.enecho.meti.go.jp/category/saving_an …
 宇宙太陽光発電所を建設する為の人と資材の輸送は、下記のブログで説明している「宇宙塔マスドライバー」が最適です。
http://blog.livedoor.jp/satou_hiroshi_4649/archi …
「アセンブリ言語について。」の回答画像1
    • good
    • 0
この回答へのお礼

という事は、複雑になるからマクロ命令が実行できないという事でしょうか?
では、マクロ命令が実行できる時はどんな時なのでしょうか?教えていただけないでしょうか?すみません。

お礼日時:2021/06/07 06:37

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!