悠里アセンブリQ&A by Ritchan先生
@sosoBOTpi 定型のイディオムをマクロとして記述して、アセンブル前に展開するようなプリプロセッサがあると便利そうですね。
2017-09-16 15:14:18@aios_ciao ですね。というか当然悠里世界で発明されているでしょうから、実装する予定です。(fen = krz f0 f0という組み込みマクロは一応ありますが)
2017-09-16 15:17:31スクラッチがf0~f3の4つ、スタック用がf5 その他は未設定というのは汎用ということかな。 ちなみに戻り先アドレスとかも(この場合f6とか)レジスタに充ててる処理系はある。
2017-09-16 15:18:15krzが命令が1サイクルで実行できて、かつ符号とか演算結果のステータスフラグに影響を与えないならfenと同等かもしれないけど、現実的な実装を考えると別に用意することになりそうな気がする。 演算結果のステータスフラグレジスタが無い(専用にはある)ようなので問題はなさそうだけど。
2017-09-16 15:24:22@aios_ciao まあ、レジスタからレジスタへのkrzならそこまで遅くならないかなぁと(着想元はx86のxchg ax, axとかです)
2017-09-16 15:26:43@sosoBOTpi 私はjz(ゼロフラグ立ってたらジャンプ)からの着想です。 事前に引き算という比較をしてフラグ立てますが。
2017-09-16 15:29:19ところでオペランドの方向指定は初期状態ではどちらなのだろう。'c'iかな?'i'cかな? まさかのロケール依存だったりして
2017-09-16 15:32:19@aios_ciao x86は「cmpで引き算を発生させて大量のフラグを立て、それに対し多量の命令で色々な場合の分岐をする」という設計だそうですね。2003fではcmpを増やすかjmpを増やすか迷ったのでダイスロールをして、cmpを増やすことにしました。
2017-09-16 15:32:37@sosoBOTpi 考察のページからは「設計者がバート人だったので'c'iで実装してたけど修正が面倒だったので'i'cにも切り替えられるようにした」と読み取って、デフォルトは'c'iかなーと思いました。
2017-09-16 15:42:12@aios_ciao リパラオネ人がメインなので'i'cに落ち着きました。settings.htmlに書いてある、「構文確定第一オペランドが-'i格、第二オペランドが-'c格として解釈される、デフォルトの語順に設定する」というのが記述です(分かりにくい)
2017-09-16 15:43:31@sosoBOTpi その部分は「第一オペランドを-'i、第二~を-'cと解釈させる」状態をデフォルトに切り替える。 と解釈したので初期状態が規定されていないのかな、と読みました(分かりにくい)
2017-09-16 15:46:07@aios_ciao @sosoBOTpi さすがに修正を受けるだろうなあ(言語監査役が開発チームに付いているので)
2017-09-16 15:47:11間接参照する際のアドレスに境界は意識しなくてもいいという先ほどの話からも、この処理系は命令長が規定されていないからCISCのような感じでも実装できるのかな。効率を考えると2byteアラインくらいにはしたいところではあるけど。
2017-09-16 16:05:43@aios_ciao 現在のインタプリタの実装では、将来命令長がどう決まったとしても困らないような作りにしてあります。
2017-09-16 16:07:16ラベル定義のnllとl'の違いがよく分からない。 どちらもアドレスにラベルをつけるはずだけど、nllでは書けないパターンがあるとか? 後ろに命令が無ければl'でしか書けないとか。←fenでも置けば書けるのでは
2017-09-16 16:17:53@aios_ciao それぞれリパライン語のla lexとny la lexに由来します。元々はla lexだけがあったのですが、関数を指し示すのに2行目にl'を置くというのは微妙だったのでnllを導入しました。
2017-09-16 16:19:24@aios_ciao そうですね、明確な使い分けの基準は考えていません(for文でcontinueしたあとi++するときとかはi++の後ろからl'を貼ったほうがループの内外が分離できて綺麗かもしれません)(@Vane11ope さんとかはどう使い分けているんだろう)
2017-09-16 16:30:12@aios_ciao @Vane11ope 現在はマルチパスアセンブラになっていますね。まあ無理にワンパスにしなくてもいい気はしていますが ja.wikipedia.org/wiki/%E3%82%A2…
2017-09-16 16:40:42