まなめ 2000 は 1 行に 1 命令を記述する形式となっています。
他には以下の特徴があります。
スルー力{コメント}
コメントです。この行では何も実行しません。
スルー力 特にこの行は何もしません スルー力 この行も何もしないよ スルー力半角スペースを入れる必要もなしっす
まなめ{まなめ|は|う|す}...
アキュムレータから指定したレジスタに値をロードします。 レジスタの指定は 1 命令で複数指定できます。
アキュムレータの値を「は」レジスタにロードする
まなめは
アキュムレータの値を「は」レジスタと「う」レジスタと「す」レジスタにロードする。
まなめはうす
なまめ{まなめ|は|う|す}...
指定したレジスタの値をアキュムレータにロードします。
レジスタの指定は 1 命令で複数指定できますが、実質最後に指定されたの値だけに意味があります。 (一応、内部的には指定した順番にアキュムレータにロードされる。)
値を「は」レジスタの値をアキュムレータにロードする
なまめは
めまな{まなめ|は|う|す}...
加算を実行します。現在のアキュムレータの値に指定したレジスタの値を足し入れます。
レジスタの指定は 1 命令で複数指定できます。指定した分だけアキュムレータに足し入れます。
アキュムレータに「は」レジスタの値を足し入れる。
めまなは
アキュムレータに「は」レジスタの値と「う」レジスタの値と「す」レジスタの値を足し入れる。
めまなはうす
アキュムレータにアキュムレータの値を 1 回と「は」レジスタの値を 5 回足し入れる。
めまなまなめははははは
以下、他の計算命令でも似たように応用できます。
ぬまな{まなめ|は|う|す}...
減算を実行します。現在のアキュムレータの値から指定したレジスタの値を引き入れます。
レジスタの指定は 1 命令で複数指定できます。指定した分だけアキュムレータから引き入れます。
アキュムレータから「は」レジスタの値を引き入れる。
ぬまなは
めなま{まなめ|は|う|す}...
乗算を実行します。現在のアキュムレータの値に指定したレジスタの値を掛け入れる。
レジスタの指定は 1 命令で複数指定できます。指定した分だけアキュムレータに掛け入れます。
アキュムレータに「は」レジスタの値を掛け入れる。
めなまは
ぬなま{まなめ|は|う|す}...
除算を実行します。現在のアキュムレータの値から指定したレジスタの値を割り入れます。
レジスタの指定は 1 命令で複数指定できます。指定した分だけアキュムレータに割り入れます。
この操作を実行した時、指定したレジスタの値が 0 の場合、エラーになります。
アキュムレータに「は」レジスタの値を割り入れる。
ぬなまは
はい、({まなめ|は|う|す})人組み作ってー
余りを求め、その値をアキュムレータに格納します。 現在のアキュムレータの値を指定したレジスタの値で割った余りを、アキュムレータに入れます。
この操作を実行した時、指定したレジスタの値が 0 の場合、エラーになります。
アキュムレータの値をに「は」レジスタの値で割った余りをアキュムレータに格納する。
はい、(は)人組み作ってー
マッチョ
アキュムレータをインクリメントします。要するに 1 足します。
値が 2147483647 の場合、値はオーバーフローして -2147483648 になります。多分。
アキュムレータをインクリメントする。
マッチョ
ウィンプ
アキュムレータをデクリメントします。要するに 1 引きます。
値が -2147483648 の場合、値はアンダーフローして 2147483647 になります。多分。
アキュムレータの値をデクリメントする。
ウィンプ
こんに(ry
アキュムレータを右シフト演算します。たいがいは 2 で割った値になりますが、 よくわからないならググレカス。俺はおまえのパパじゃない。
アキュムレータを右シフト演算する。
こんに(ry
こんにちはこんにちは!!
アキュムレータを左シフト演算します。たいがいは 2 倍の値になりますが、 よくわからないならググレカス。私はあんたのママじゃない。
アキュムレータを左シフト演算する。
こんにちはこんにちは!!
('(゚∀゚∩なおるよ!
使用するレジスタを、現在の状態に関わらず表レジスタを使用します。
現在使用するレジスタを、表レジスタにする。
('(゚∀゚∩なおるよ!
逆に考えるんだ
使用するレジスタを、現在の状態とは逆のレジスタを使用するようにします。 表レジスタを使用している場合は、裏レジスタを。 裏レジスタを使用している場合は、表レジスタを使用するようにします。
現在使用するレジスタを、逆のレジスタにするようにする。
逆に考えるんだ
まめな{まなめ|は|う|す}...
指定したレジスタの値のアドレスが指すメモリの値を、アキュムレータにロードします。
レジスタの指定は 1 命令で複数指定できますが、実質最後に指定されたの値だけに意味があります。 (一応、内部的には指定した順番にアキュムレータにロードされる。)
この命令を実行するまでに、一度もそのアドレスが指す領域に MEMORY_WRITE 命令を 実行していない場合、エラーとなります。
「は」レジスタの値のアドレスが指すメモリの値を、アキュムレータにロードする。
まめなは
なめま{まなめ|は|う|す}...
指定したレジスタの値のアドレスが指すメモリの領域に、アキュムレータの値を格納します。
レジスタの指定は 1 命令で複数指定できます。 指定した全てのレジスタの値のアドレスが指すメモリの領域に、 アキュムレータの値を格納します。
「は」レジスタの値のアドレスが指すメモリの領域に、アキュムレータの値を格納する。
なめまは
「は」レジスタの値のアドレスが指すメモリの領域と、 「う」レジスタの値のアドレスが指すメモリの領域と、 「す」レジスタの値のアドレスが指すメモリの領域に、 アキュムレータの値を格納する。
なめまはうす
{まなめ|は|う|す}...爆発しろ!
指定したレジスタの値をそのまま文字として画面に出力します。 値(数値)がどの文字に対応するのかは、ASCII とか Shift JIS とかその辺勉強してください。
レジスタの指定は 1 命令で複数指定できます。 指定した全てのレジスタの値を順番に出力します。
アキュムレータの値をそのまま文字として画面に出力します。
まなめ爆発しろ!
アキュムレータの値と「は」レジスタの値と「う」レジスタの値と「す」レジスタの値を、 その順番でそのまま文字として画面に出力します。
まなめはうす爆発しろ!
「は」レジスタの値を 5 回そのまま文字として画面に出力します。
ははははは爆発しろ!
{まなめ|は|う|す}...爆発しる!
指定したレジスタの値を数値として画面に出力します。
レジスタの指定は 1 命令で複数指定できます。 指定した全てのレジスタの値を順番に出力します。
アキュムレータの値を数値として画面に出力する。
まなめ爆発しる!
要は、{文字列}がないんでしょ?
アキュムレータに、指定した文字列または数値をそのままロードします。
文字列は 4 バイトまで指定できます。要するに半角文字で 4 文字まで、全角では 2 文字までです。
文字列中はエスケープシーケンスが使用出来ます。使用可能なエスケープシーケンスは以下です。 意味は他の言語とだいたい一緒です。
\a | \b | \f | \n | \r | \t |
\v | \\ | \? | \' | \" | \0 |
アキュムレータに文字列「a」をロードする。
要は、aがないんでしょ?
アキュムレータに文字列「勇気」をロードする。
要は、勇気がないんでしょ?
アキュムレータに改行文字をロードする。
要は、\nがないんでしょ?
ワシの波動球は{数値}式まであるぞ
アキュムレータに、指定した文字列または数値をそのままロードします。
数値は整数のみ、-2147483648 〜 2147483647 の値を指定出来ます。
アキュムレータに 108 をロードする。
ワシの波動球は108式まであるぞ
アキュムレータに -999 をロードする。
ワシの波動球は-999式まであるぞ
ようこそ{はてなID}さん
現在の位置のタグをつけます。これ自体では何も処理しません。 ジャンプ命令やコール命令のジャンプ先として指定します。
複数の場所に同じ名前を指定することはできません。
「はてなID」の形式ははてな ID の制限を受けます。 実際にどーゆー制限かはてきとーに調べてくだしあ。 ってゆーか、実際にあるはてなIDを使えば良いのですよ。
この場所に、temtan という名前のタグを付ける。
ようこそtemtanさん
また明日から刺身の上にタンポポのせる仕事が始まるお
現在のプログラムコードの行数の値を、アキュムレータにロードします。 DYNAMIC_JUMP 命令や DYNAMIC_CALL 命令でジャンプ先に指定する際に使用します。
現在のプログラムコードの行数をアキュムレータにロードする。
また明日から刺身の上にタンポポのせる仕事が始まるお
id:{はてなID}は死ねばいいのに
「はてなID」で指定した場所に処理が移ります。
プログラムコード中に存在しない「はてなID」を指定した場合、エラーになります。
STATIC_TAG 命令で「temtan」と名付けた場所に処理を移す。
id:temtanは死ねばいいのに
かわいいよid:{はてなID}かわいいよ
現在のアキュムレータの値が 0 であった場合、 「はてなID」で指定した場所に処理が移ります。
そうでない場合、ここでは何も処理が行われずに次の命令に移ります。
プログラムコード中に存在しない「はてなID」を指定した場合、エラーになります。
アキュムレータの値が 0 であった場合、 STATIC_TAG 命令で「temtan」と名付けた場所に処理を移す。
かわいいよid:temtanかわいいよ
スイーツ({まなめ|は|う|す})
指定したレジスタの値の行数のプログラムコードに処理を移します。
通常は DYNAMIC_TAG 命令で取得した値を使用しますが、別にそうでない値を使用することも可能です。
プログラムコードの全行数よりも大きな値を指定した場合、エラーになります。
この命令、作ったは良いですが、いまいち使い道がわかりません。
「は」レジスタの値の行数のプログラムコードに処理を移します。
スイーツ(は)
プログラムの最初に処理を移す。 (アキュムレータに 0 をロードして 0 行目に処理を移す)
ワシの波動球は0式まであるぞ スイーツ(まなめ)
これはひどいid:{はてなID}
「はてなID」で指定した場所をサブルーチンコールをします。 一旦、指定した場所に処理が移ります。 処理が移った後に RETURN 命令が実行された時は、処理はこの場所から継続されます。
プログラムコード中に存在しない「はてなID」を指定した場合、エラーになります。
STATIC_TAG 命令で「temtan」と名付けた場所をサブルーチンコールします。
これはひどいid:temtan
id:{はてなID}…恐ろしい子!
現在のアキュムレータの値が 0 であった場合、 「はてなID」で指定した場所をサブルーチンコールをします。 一旦、指定した場所に処理が移ります。 処理が移った後に RETURN 命令が実行された時は、処理はこの場所から継続されます。
そうでない場合、ここでは何も処理が行われずに次の命令に移ります。
アキュムレータの値が 0 であった場合、 STATIC_TAG 命令で「temtan」と名付けた場所をサブルーチンコールします。
id:temtan…恐ろしい子!
ライフハック({まなめ|は|う|す})
指定したレジスタの値の行数のプログラムコードをサブルーチンコールをします。
通常は DYNAMIC_TAG 命令で取得した値を使用しますが、別にそうでない値を使用することも可能です。
プログラムコードの全行数よりも大きな値を指定した場合、エラーになります。
この命令、作ったは良いですが、DYNAMIC_JUMP よりさらに使い道がわかりません。
「は」レジスタの値の行数のプログラムコードをサブルーチンコールします。
ライフハック(は)
さあ、はやく作業に戻るんだ
サブルーチンからリターンする命令です。 サブルーチンコール後にこの命令を実行すると、サブルーチンコールした場所に処理が戻ります。
一度もサブルーチンコールされていない時に、この命令を実行した場合エラーになります。
以前、サブルーチンコールをした場所に処理を戻す。
さあ、はやく作業に戻るんだ
ゆっくりしていってね!!!
現在使用しているレジスタ群の値を、レジスタ用スタックに保存します。
典型的な使い方として、サブルーチンの最初に使用して呼び出し元のレジスタを保護する使い方があります。
現在使用しているレジスタ群の値をレジスタ用スタックに保存します。
ゆっくりしていってね!!!
ゆっくりした結果がこれだよ!!!
レジスタ用スタックに格納してあるレジスタ群の値を取り出して、現在使用しているレジスタにロードします。
典型的な使い方として、PUSH 命令とセットでサブルーチンの最後の RETURN 命令の実行の直前に使用して、 保護していた呼び出し元のレジスタを回復させる使い方があります。
それまでに一度も PUSH 命令を実行していない時に、この命令を実行した場合エラーになります。
ゆっくりした結果がこれだよ!!!