コミュニティアイコン プチコン 非公式コミュニティ プレイ日記

アバター
takumi ◆Ce3Q40uXWJjn
2019/8/29 15:17
考えたDEF命令
ハードウェアが3DSかWiiUかSwitchか調べる

DEF HARDWARE3()
MML$="{A}{A=C4D4}"
IF CHKMML(MML$)!=-1 THEN HW=3
IF CHKMML(MML$)==-1 THEN HW=HARDWARE
RETURN HW
END

3が返るとSwitchです。

コメント

アバター
Na 2019/8/29 15:33 ◆QoELVrBXBQCI
たぶん最短
DEF HARDWARE3()
RETURN !VERSION*3+HARDWARE
END

ただしOPTION STRICTはなし。
アバター
高原のな 2019/8/29 15:34 ◆bY8RViwvoODw
(これは確かに簡単そうだ…… NMPACKSではもっと派手なことしちゃった(確かシステム変数の定義未定義を使った強引な実装だった記憶)。でもどんな実装だったかは、消しちゃったから覚えてない)
アバター
Na 2019/8/29 15:36 ◆QoELVrBXBQCI
mkII at 3号/4ではIF VERSION THEN 〜ってしてたはず。
(そしていまだに1度もプチコン4で起動確認していない。)
アバター
高原のな 2019/8/29 15:39 ◆bY8RViwvoODw
記憶が正しければうちはVERSION$を使ってた記憶
古い開発データすぐ消しちゃう主義なので、手元に何も残ってないんですよね……

CHKMMLを使うのはすごく良いと思いますが、MMLの仕様変更が来ちゃったら厳しいかもね……と。
アバター
Na 2019/8/29 15:41 ◆QoELVrBXBQCI
Switchの後継機が出て#HARDWAREが2種類以上の値を返すようになったら、それも考慮しないといけない。

ただし3号で#HARDWAREと書くとコンパイル時にSyntaxError
アバター
takumi 2019/8/30 16:52 ◆Ce3Q40uXWJjn
コンパイルって何ですか?
アバター
Na 2019/8/30 17:11 ◆QoELVrBXBQCI
>takumiさん
ざっくりいうとプログラムを機械語に変換することです。
プチコン3号では実行前にBASICプログラムを実行しやすいように変換してから実行することで、mkIIより高速になってるらしいです。
#HARDWAREのような定義されてない定数はこのコンパイルの時にエラーになるので、すぐに実行されない場所に書いてあったとしてもすぐにSyntax errorが出ます。
アバター
高原のな 2019/8/30 17:54 ◆bY8RViwvoODw
機械語や機械語に近い言語に変換をするソフトは、どのタイミングで機械語以外の言語を変換をするのかによって呼び分けられていて、一気に翻訳して翻訳結果を出力するソフトを「コンパイラ(compiler)」、実行中に逐次解釈するソフトを「インタプリタ(interpreter)」と呼びます。(なお、大変不正確な説明をしているので正確さが必要であれば論文や英語の資料をあたることをおすすめします)
で、プチコン3号以降のプチコンはこの「コンパイラ」的機能と「インタプリタ」の組み合わせになってます。(実際、最近はインタプリタ型実行環境でもこのような実装が増えてきています)

<以下推測が含まれます>
プチコン3号では、与えられたコードを一旦実行しやすい中間の言語に変換する(「コンパイラ」的機能の実行、つまり「コンパイル」する)際に、ある程度の計算処理を済ませてしまうと思われます。未定義定数は実行前にエラーが出ることから、その先に済ませる処理に定数が含まれているようです。(逆にユーザ定義命令の名前チェックは済ませてしまう処理ではないようなので、実行時(「インタプリタ」的機能による実行時)にはじめてエラーになります。変数はOPTION STRICTの使用の有無で変わります)

コメントを書く

  • こちらは「プチコン3号」「プチコンBIG」など、プチコンシリーズに関する話題を扱ったコミュニティです
  • プチコンシリーズにまったく関係ない書き込みはご遠慮下さい。削除の対象となります
  • こちらにはその他のゲームや雑談のコミュニティはなく、作る予定もありません (ひとりで管理できないため)。ごめんなさい
  • ユーザー登録なしで書き込みができます
  • 秘密の合い言葉は成りすましの防止 (トリップ機能)、書き込みの編集時の本人認証に使用します
  • 秘密の合い言葉に他人に推測されやすい言葉、他サービスと同じパスワードは入力しないでください。
  • 書き込むと、投稿時に入力したお名前と秘密の暗号が記憶され、ログイン状態になります

- WEB PATIO -