悠里アセンブリQ&A by Ritchan先生 part3

0
AIOS CIAO @aios_ciao

インタプリタの続きをつくろう。 動かすべき言語仕様のところさえ合ってれば実装はべつにどうなっててもいいでしょう、たぶん。 アセンブラ側の言語拡張とかデバッガ側の機能拡張とか。

2017-09-30 10:21:44
【ゲムマ両サ-19】hsjoihs (はすじょい) @ 言語が好き @sosoBOTpi

@aios_ciao 「仕様のところさえ合ってれば実装はべつにどうなっててもいい」その通りです。そもそもHaskellでの実装とそれ以外での実装が一致するはずもなく ちなみに、もうちょいすると仕様が増える予定です(プログラムを複数ファイルに分割し、別のファイルにある関数を呼び出す機能の追加)

2017-09-30 10:27:20
AIOS CIAO @aios_ciao

別ファイルのラベル位置に処理を移す場合、 プリプロセッサ的に前処理としてソースごと読み込んでおくタイプか、 シンボルとソースファイル名とアドレス情報だけ保持しておいてジャンプ実行時に実際読み込んで飛ぶ遅延評価タイプか。

2017-09-30 10:31:39
AIOS CIAO @aios_ciao

[コンパイル/アセンブル/ビルド]エラー時には行番号、桁番号出そうかと思ってたけど、ソース名もつけとかないと、かな。

2017-09-30 10:32:37
【ゲムマ両サ-19】hsjoihs (はすじょい) @ 言語が好き @sosoBOTpi

@aios_ciao ライブラリの呼び出しを別ファイル呼び出しと同等に扱いたいので、どうしたものかなぁ、といったところです(リンカとかに絡む)

2017-09-30 10:34:36
AIOS CIAO @aios_ciao

@sosoBOTpi ソース解析部分で処理するか、実行部分で処理するか、ですね。 ファイル分割記述可能な世のインタプリタはどう処理しているんでしょうね

2017-09-30 10:36:08
【ゲムマ両サ-19】hsjoihs (はすじょい) @ 言語が好き @sosoBOTpi

@aios_ciao Haskellはモジュールの依存関係を見て必要な全ファイルを見にいって実行、ですね

2017-09-30 10:38:18
AIOS CIAO @aios_ciao

ちなみに 'i'c krz f0 f5-4@ とは書けるのかな。 あ、0xFFFFFFFCを足すのか… krz f0 f5+0xFFFFFFFC@

2017-09-30 10:39:35
【ゲムマ両サ-19】hsjoihs (はすじょい) @ 言語が好き @sosoBOTpi

@aios_ciao ASCIIの-はリパーシェのハイフンに割り振っているので、減算符号には使えないんですよ。そのための苦肉の策です

2017-09-30 10:40:45
AIOS CIAO @aios_ciao

@sosoBOTpi リパーシェで各種算術記号って定義されてましたっけ

2017-09-30 10:41:56
渡久地 信之 @palfem_kleet

@sosoBOTpi @aios_ciao 早めにどうにかしたいところだなあ

2017-09-30 10:42:03
AIOS CIAO @aios_ciao

+の縦棒倒して=で減算でいいんじゃね

2017-09-30 10:42:47
【ゲムマ両サ-19】hsjoihs (はすじょい) @ 言語が好き @sosoBOTpi

@aios_ciao 現在審議中です(+はあります)(減算符号もありますが、現世のどこに割り振るかが未確定なので現状使えません)

2017-09-30 10:43:21
【ゲムマ両サ-19】hsjoihs (はすじょい) @ 言語が好き @sosoBOTpi

@palfem_kleet @aios_ciao 炭酸ソーダさんの案だと機械語上はFCと書けるので、まあいいかなぁという印象はある

2017-09-30 10:44:06
AIOS CIAO @aios_ciao

(オペコードは独自に作る予定)

2017-09-30 10:44:41
【ゲムマ両サ-19】hsjoihs (はすじょい) @ 言語が好き @sosoBOTpi

@aios_ciao Haskellインタプリタ、そもそもオペコードを制定せずHaskellの代数データ型で生に扱ってます

2017-09-30 10:46:33
AIOS CIAO @aios_ciao

@sosoBOTpi まずインタプリタではニーモニックを直接解釈して実行する形にします(オペコード定義無し)。そのあとファイル出力対応時にオペコード(中間コード)を決める予定です。

2017-09-30 10:48:43
AIOS CIAO @aios_ciao

インタプリタ実行ではステートメントのアドレスは仕様通りランダムな間隔で配置されたように見える。中間コードに吐き出してそれを実行する時にはメモリにロードされるのである程度規則的なサイズで連続的な配置に見える。 はず。 ロード時にわざわざバラけさせる意味がないし。

2017-09-30 10:52:08
AIOS CIAO @aios_ciao

連続アドレスもランダムのうちだもの。

2017-09-30 10:52:47
渡久地 信之 @palfem_kleet

オペコードのみの実装はうちのだけでは……?

2017-09-30 10:55:23
AIOS CIAO @aios_ciao

ラベルに使える文字、というかソースで使える文字は大小文字が区別される認識でいいのだろうか。 XとかRとか分かれてるし。

2017-09-30 10:56:38
AIOS CIAO @aios_ciao

だとするとkrzはkrzとかかなければならないし、ラベル名としてKRZと書いても問題ないことになる。

2017-09-30 10:57:13