【初月無料キャンペーン中】gooドクター

以下のURLの回答者は正しいのでしょうか?教えていただけないでしょうか?すみません。
https://oshiete.goo.ne.jp/qa/12398586.html

gooドクター

A 回答 (2件)

>マクロアセンブラは、プログラムの中で繰り返し使う部分に人間がマクロ名を付けて、その部分を「マクロ命令」にしているので、ソースの中にマクロ名が出て来る度に「マクロ命令」を呼び出して処理する事になります。



これはまあOK。

>ソースの中の「マクロ名」が有るか無いか、有れば「マクロ命令」のある場所にジャンプして、そこの「マクロ命令」を実行して、実行が終了したら、先の「マクロ名」が有った次の行に戻り、処理を続ける・・・などの処理がマシン語(0101など)で生成されます。

これは誤り。マクロではなくサブルーチンの説明です。マクロはジャンプしません。そのまま連続で処理されます。同じ処理を複数回行うのに、その処理に名まえをつけたのがマクロです。たとえば平方根を求めるプログラムにSQRTという名まえでマクロを定義します。マクロアセンブラーはSQRTを見つけるとそれをSQRTで定義されたプログラムをそのまま展開します。SQRTが1 kBのサイズで10回呼ばれたら10 kBのサイズです。サブルーチンではSQRTを定義しておいてそれをCALL文で呼び出します。使うプログラムのサイズはSQRTの1 kB+CALLの数バイトです。マクロはCALL, RETやスタックの処理が不要なので高速に実行できます。
「アセンブリ言語」の回答画像2
    • good
    • 0
この回答へのお礼

所で、
以下の質問ですが、
xs200さんにした質問に詳しく教えていただけないでしょうか?すみません。
https://oshiete.goo.ne.jp/qa/12404524.html
以上のURLです。
についての回答もお願いできればと思います。
で、新しく立ててください。というのならば、立てます。
よろしくお願いします。

お礼日時:2021/06/15 15:39

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


正しい。

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

用語とそのコンテクストに合意がとれてるか不明ですが、まあ合ってるのでは。
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています

gooドクター

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング