今日のテーマ   日々改造 (^_^;)         
[記事リスト(ツリー表示)]  [ 返信 ]   [新着記事] [最新50] [ワード検索] [過去ログ]

タイトル Re: アセンブラ&コンパイラ、きっと NOT (neg?)
投稿日: 2022/11/11(金) 22:58
投稿者としき
参照先http://toshiki.la.coocan.jp/
 番 号 10392    10390 番 文太 さんへのコメント    コメント数 1

#10387で紹介されたリンクからダウンロードしました。
まだ中を覗いてもいません。
が、#10391を見る限りでは、明らかに素のアセンブラ。
なぜここでアセンブラのソースにとどめて一気にマシン語にまで落とさなかったん
だろうという疑問はありますが、私にはわからない何らかのメリットはあるんで
しょう。FAQとかあれば、きちんと書いてありそうな疑問ではあります。

> >そうではなく、変数に定数を代入する、というようなロジックでプログラムを書く
> >のが高級言語。
>  変数への代入? どういうことでしょう? アセンブラソースだって、変数への
> 代入はするでしょう? 何かロジックが根本において違う、ということだろうと
> 想像。

眠くて端折ったところ、やっぱりわかりにくくなっていますね。
多くの場合、高級言語では、1つのコマンドまたはステートメントは複数の機械語
に変換されるのです。例えば、変数の代入の場合なら、変数はメモリ上のどこかの
領域に確保されているわけで、そのアドレスを計算してから、そこへの代入、と
いうコードに変換されるわけです。
この前提があるものですから、かつて、LSI-C86が、可能な限り変数をレジスタに
割り付けると知って、多くのプログラマが驚いたのです。レジスタなら、変数の
アドレスを計算するルーチンが丸々省略できて、場合によっては、高級言語の1つ
の代入が機械語の1つのコードに変換できるわけですから。
私の個人的な話をすると、昔、8ビットマシンでBASICのコードを機械語にハンド
アセンブルしていたとき。当時のZ80では、レジスタを使った値の受け渡しよりも
スタックを介した値の受け渡しのほうが早い場合が多かったのです。今のCPUが
どうなっているかは知りませんがね。なので、私のコードでは、スタックを使い
まくり。

ということで、

> >そして、そのプログラムを複数の機械語に変換する、というのがコンパイラ。
>  なぜ、としきさんはここで「複数の」と書いたのでしょう?

高級言語の1つのコードは、多くの場合、複数の機械語に変換されることが非常に
多いという現実があるわけです。もちろん、場合によっては、一つの機械語に変換
されるかもしれません。そして、仮に一つの機械語であっても、それは単なるcall
文に変換されて、変換先で複数のコードが実行される、ということになっている
かもしれません。

> >また、コンパイラも、ターゲットのマシンの機械語にコンパイルする、いわゆる
> >普通のコンパイラのほかにも、仮想的なマシンの機械語にコンパイルするという
> >種類のものが昔からありました。
>  ここからは、もうまったく。CPUにそもそもvirtualizationの仕組みが入っている
> というのは、「分からん」「いつかね」とCPU本でスキップした箇所。

CPUのvirtualizationとは、おそらく直接は関係ない。
まずは、クロスコンパイラ、という技術を知っていただくのがいいのかな。
多くの場合、コンパイラは、自分の動いているマシンのCPU用のコードを出力します。
これに対してクロスコンパイラは、別のマシン用のコードを出力します。
普通、このクロスコンパイラというやつは、現実に存在するマシンのコードを出力
します。でも、その気になれば、全く世の中に存在しないマシン用のコードを出力
するように設計することも可能なわけですよ。
自然言語で考えればわかりやすいかもしれません。
翻訳ソフトで、普通なら出力が英語。これが普通のコンパイラ。
クロスコンパイラなら、出力がフランス語。
でも、例えば、エスペラントを出力させることも可能。
あるいはそれこそ、仮想言語であるヴォイニッチ語を出力させる、とか。
この辺、私の説明がつたないので、自然言語との類推が難しいかもしれない。
疑問点があればおっしゃってください。
もうちょっと具体的に説明できるかもしれません。

> >最初にBASMの話を聞いたとき、私はこれだと思ったんですよ。
>  いちおう、これのはずなのですが。
>
> >マクロを使いまくったアセンブラのソースに変換するのであれば、それはコンパイラ
> >でもアセンブラでもないよね、ということ。
>  ほぼこれのはずです。

そうですね、なんとなくそんな感じです。
なかなか面白そうではあります。

    - No.10392 一括表示へ   -   コメント元:10390 一括表示へ  -    [ 返信 ]    [引用無し] soft


- 関連一覧ツリー (先頭の番号をクリックするとツリー全体を一括表示します)
10387.BASM - 文太 22/11/11-12:35
  ┣10389.TSR!!! - 文太 22/11/11-13:19
  ┣10390.アセンブラ&コンパイラ、きっと NOT (neg?) - 文太 22/11/11-16:12
  ┣10391.追記 - 文太 22/11/11-16:29
  ┗10392.Re: アセンブラ&コンパイラ、きっと NOT (neg?) - としき 22/11/11-22:58
   ┗10393.Re^2: アセンブラ&コンパイラ、きっと NOT (neg?) - 文太 22/11/12-00:46
    ┣10394.PrintStrプロシージャ(asm) - 文太 22/11/12-01:12
    ┗10395.Re^3: アセンブラ&コンパイラ、きっと NOT (neg?) - としき 22/11/12-16:13
     ┣10396.Re^4: アセンブラ&コンパイラ、きっと NOT (neg?) - 文太 22/11/12-21:53
     ┗10398.Re^5: アセンブラ&コンパイラ、きっと NOT (neg?) - としき 22/11/12-23:09
      ┣10401.Re^6: アセンブラ&コンパイラ、きっと NOT (neg?) - 文太 22/11/13-00:17
      ┗10405.Re^7: アセンブラ&コンパイラ、きっと NOT (neg?) - としき 22/11/13-01:30
       ┗10408.ゲーム&ビジネス - 文太 22/11/13-14:06
        ┣10416.Re: ゲーム&ビジネス - としき 22/11/14-01:36
        ┣10422.Programming Style - 文太 22/11/14-21:21
        ┗10442.Re: Programming Style - としき 22/12/25-00:13
      ┗10402.Re^6: アセンブラ&コンパイラ、きっと NOT (neg?) - 文太 22/11/13-00:31
       ┗10404.Re^7: アセンブラ&コンパイラ、きっと NOT (neg?) - としき 22/11/13-01:01
        ┗10407.構造化 - 文太 22/11/13-13:49
         ┣10410.Re: 構造化 - 文太 22/11/13-23:36
         ┗10417.Re: 構造化 - としき 22/11/14-01:36
          ┣10420.Index of _Software Tools_ (1976) by Kernighan &am.. - 文太 22/11/14-20:56
          ┗10421.18650 - 文太 22/11/14-21:05
  ┗10397.JVM - 文太 22/11/12-21:54
   ┗10399.Re: JVM - としき 22/11/12-23:23
    ┗10400.Re^2: JVM - 文太 22/11/13-00:16
     ┗10403.Re^3: JVM - としき 22/11/13-00:53
      ┣10406.大門未知子 - 文太 22/11/13-13:03
  ┗10411.古典 - 文太 22/11/13-23:38
   ┗10424._ST in Pascal_ (1981) - 文太 22/11/18-13:07
    ┗10425.Re: _ST in Pascal_ (1981) - としき 22/11/18-16:31
     ┗10427.Re^2: _ST in Pascal_ (1981) - 文太 22/11/18-20:28
      ┣10428.Re^3: _ST in Pascal_ (1981) - としき 22/11/18-22:11
      ┗10436.Re^3: _ST in Pascal_ (1981) - 文太 22/11/28-21:22
       ┗10439.Re^4: _ST in Pascal_ (1981) - としき 22/11/30-01:49
        ┗10441.Re^5: _ST in Pascal_ (1981) - 文太 22/12/01-16:15

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)   [引用無し]
おなまえ 
Eメール 
タイトル 
メッセージ auto soft pre(図表、プログラム) ※折り返さずに改行を入れてね
 参照先 
 暗証キー (英数字で8文字以内)
 プレビュー          

- 以下のフォームから自分の投稿記事を修正・削除することができます -
   処理   記事No   暗証キー
    [ページトップへ] [管理用]