タイトル | : Re^4: アセンブラ&コンパイラ、きっと NOT (neg?) |
投稿日 | : 2022/11/12(土) 21:53 |
投稿者 | : 文太 | 番 号 | : 10396 10395 番 としき さんへのコメント コメント数 1 |
としきさん 今日は、ここだけで失礼します。>> としきさん、割とマクロ、マクロ(アセンブラの)と書かれていて、>なるほど、ここも私がわかっていなくて想像していた部分でした。>例えば、分岐やループの構文。なるほどぉ。いえ、としきさんが正解です、というか半々。マクロでは ないが、プロシージャでもない。 制御フローのことがすぐに頭に浮かぶんですね。この前の変数の話(メモリの アドレス)とも似て、やはりとしきさんのほうが僕より、なんだろう、プログラミング 上、あるいはCPUとプログラムの関係上、正しい想像力をお持ちです、たぶん。 当たり前だけど。 その方向で考えているのだろう、と僕には想像ができなかった、ということです。 文脈を想像力で埋めることができなかった、という意味。 で、マクロでなくプロシージャでもなく(後者でフローを作れるのか?) ベタなラベルジャンプ(最終的にはこれしかないから)が正解でした。 DoLoop_01: ; ;print "Hello there " a$ ;これだけの命令が ; Mov SI,Offset $tring_03 ;ループなしでも Call PrintStr ;これだけのプロシージャ Call SetCursor ;を必要とする Mov SI,Offset A$ ;やるなら、高級言語だろう Call PrintStr ;あるいは Call SetCursor ;Vzマクロ。 ;この感慨が面白くて Call DoCrLf ;BASMに興味を持ちました ; ;incr a ; Inc A ; ;if a = 23 then ; Cmp A,23 Je $+5 Jmp _EndIf_01 ; ;exit loop ; Jmp DoLoop_01A ; ;end if ; _EndIf_01: ; ;loop ; Jmp DoLoop_01 DoLoop_01A:>最近のアセンブラならマクロで構築するじゃないですか。僕は、最近のことはまったく知らないのですが、そうなのですか? c.mos流のあれをみて、そしてその原理をEmmettさんに教わって(@過去ログ) 最初にあれを考えた人(注)は何て頭がいいのだろう、と思いました。 Cみたいな顔してるくせして、実はラベルを中で自動生成していた。 ちなみに、上のようなプロシージャだらけの書き方を(この例はあまりよくない かもしれないけど。たぶん他のやり方は醜すぎるから)、Jeff先生は強く強く 推奨していて(構造化)、「どうだ、アセンブラがパスカルみたいだろう」と 書かれていて、笑いました。 まあね、と。 で、僕は、よし、パスカルをやろう、と決心したという次第。その後、 1ミリも前進していないけど。 JVM、たまたま出会いました。別発言で。 (注)とはいっても、〈マクロ〉アセンブラに内蔵されてると言ってもいいような 仕組みだから、アセンブラ作者自身でしょうね。MASMのドキュメントとかに書かれてる のかなぁ? 「こんな使い方をすると賢いですよ」とか。
- No.10396 一括表示へ - コメント元:10395 一括表示へ - [ 返信 ] [引用無し] pre