仮想機械メソッド

概要

必要なプラグイン

MSIL生成機能(Produire.MSIL.dll)

 

手順

加算命令を書き込む 減算命令を書き込む 乗算命令を書き込む 除算命令を書き込む 剰余算命令を書き込む 論理和演算命令を書き込む 論理積演算命令を書き込む 否定演算命令を書き込む 左シフト演算命令を書き込む 右シフト演算命令を書き込む 等価比較命令を書き込む 大なり比較命令を書き込む 小なり比較命令を書き込む 変数を作る 配列として作る 変数を配列として作る 配列生成命令を書き込む 変数読み込み命令を書き込む 変数参照命令を書き込む 変数書き込み命令を書き込む 参照書き込み命令を書き込む 参照読み込み命令を書き込む フィールド読み込み命令を書き込む フィールド参照命令を書き込む 読み込む命令を静的フィールド値を書き込む 読み込む命令を静的フィールド参照を書き込む 静的フィールド値を書き込む命令を書き込む 引数読み込み命令を書き込む 引数参照命令を書き込む 引数書き込み命令を書き込む 配列読み込み命令を書き込む 配列参照命令を書き込む 配列書き込み命令を書き込む プロパティ取得メソッドを取得 プロパティ設定メソッドを取得 終了命令を書き込む 空参照を書き込む ポップ命令を書き込む ボックス化命令を書き込む アンボックス化命令を書き込む 生成する命令を書き込む メッセージ表示を書き込む コンソール出力を書き込む コンソール入力を書き込む 一字出力を書き込む 一字入力を書き込む 新しいラベルを宣言する ラベルを書き込む 移動する命令を書き込む 成立時移動する命令を書き込む 不成立移動する命令を時書き込む 選択移動する命令を書き込む 整数文字列化を書き込む 文字列整数化を書き込む 浮動小数文字列化を書き込む 文字列整数配列化を書き込む メソッド呼び出しを書き込む 呼び出す命令を書き込む 整数定数として書き込む 浮動小数定数として書き込む 文字列定数として書き込む 仮引数を設定する メソッド呼び出しを作る 

【自分】へ加算命令を書き込む

加算命令(Add)を書き込みます

【自分】へ減算命令を書き込む

減算命令(Sub)を書き込みます

【自分】へ乗算命令を書き込む

乗算命令(Mul)を書き込みます

【自分】へ除算命令を書き込む

除算命令(Div)を書き込みます

【自分】へ剰余算命令を書き込む

剰余命令(Rem)を書き込みます

【自分】へ論理和演算命令を書き込む

論理和演算命令(Or)を書き込みます

【自分】へ論理積演算命令を書き込む

論理積演算命令(And)を書き込みます

【自分】へ否定演算命令を書き込む

否定演算命令(Not)を書き込みます

【自分】へ左シフト演算命令を書き込む

左シフト演算命令(Shl)を書き込みます

【自分】へ右シフト演算命令を書き込む

右シフト演算命令(Shr)を書き込みます

【自分】へ等価比較命令を書き込む

等価比較命令(Ceq)を書き込みます

【自分】へ大なり比較命令を書き込む

大なり比較命令(Cgt)を書き込みます

【自分】へ小なり比較命令を書き込む

小なり比較命令(Clt)を書き込みます

【型】である【変数名:文字列】という【自分】へ変数を作る仮想機械局所変数

指定した型のローカル変数を作ります。ローカル変数には指定された名前が設定されます

【型】である【変数名:文字列】を【自分】へ配列として作る仮想機械局所変数

配列のローカル変数を書き込みます。ローカル変数には指定された名前が設定されます

【型】である【自分】へ変数を作る:仮想機械局所変数

指定した型のローカル変数を作ります

【型】である【自分】へ変数を配列として作る仮想機械局所変数

配列のローカル変数を書き込みます

【型】である【自分】へ変数を作る:仮想機械局所変数

指定した型のローカル変数を作ります

【型】である【自分】へ配列として変数を作る:仮想機械局所変数

配列のローカル変数を書き込みます

【型】である【自分】へ配列生成命令を書き込む

配列を生成する命令を書き込みます

【変数:仮想機械局所変数】から【自分】へ変数読み込み命令を書き込む

指定した変数の値をスタックに積む命令を書き込みます

【変数:仮想機械局所変数】から【自分】へ変数参照命令を書き込む

指定した変数の参照をスタックに積む命令を書き込みます

【変数:仮想機械局所変数】へ【自分】に対して変数書き込み命令を書き込む

スタックにある値を指定した変数に書き込む命令を書き込みます

【変数名:文字列】から【自分】へ変数読み込み命令を書き込む

指定した変数名からその変数の値をスタックに積む命令を書き込みます

【変数名:文字列】から【自分】へ変数参照命令を書き込む

指定した変数名からその変数の参照をスタックに積む命令を書き込みます

【変数名:文字列】へ【自分】に対して変数書き込み命令を書き込む

スタックにある値を指定した名からその変数に書き込む命令を書き込みます

【型】である【自分】へ参照書き込み命令を書き込む

スタックにあるアドレスへオブジェクトを書き込む命令を書き込みます

【型】である【自分】へ参照読み込み命令を書き込む

スタックにあるアドレスからオブジェクトを読み込む命令を書き込みます

【フィールド名:仮想機械フィールド】から【自分】へフィールド読み込み命令を書き込む

指定した変数の値をスタックに積む命令を書き込みます

【フィールド名:仮想機械フィールド】から【自分】へフィールド参照命令を書き込む

指定した変数の参照をスタックに積む命令を書き込みます

【フィールド名:仮想機械フィールド】へ【自分】に対してフィールド書き込み命令を書き込む

スタックにある値を指定したフィールドに書き込む命令を書き込みます

【フィールド:仮想機械フィールド】から【自分】へ読み込む命令を静的フィールド値を書き込む

指定した静的フィールドの値をスタックに積む命令を書き込みます

【フィールド:仮想機械フィールド】から【自分】へ読み込む命令を静的フィールド参照を書き込む

指定した静的フィールドの参照をスタックに積む命令を書き込みます

【フィールド:仮想機械フィールド】へ【自分】に対して静的フィールド値を書き込む命令を書き込む

スタックにある値を指定した静的フィールドに書き込む命令を書き込みます

【引数番号:整数】から【自分】へ引数読み込み命令を書き込む

指定した変数の値をスタックに積む命令を書き込みます

【引数番号:整数】から【自分】へ引数参照命令を書き込む

指定した変数の参照をスタックに積む命令を書き込みます

【引数番号:整数】へ【自分】に対して引数書き込み命令を書き込む

スタックにある値を指定した変数に書き込む命令を書き込みます

【自分】へ配列読み込み命令を書き込む

スタックにある配列から、スタックで指定した要素番号にある値をスタックに積む命令を書き込みます

【型】である【自分】へ配列参照命令を書き込む

スタックにある配列から、スタックで指定した要素番号にある参照をスタックに積む命令を書き込みます

【自分】へ配列書き込み命令を書き込む

スタックにある値を、スタックにある配列から、スタックで指定した要素番号にある値へ書き込む命令を書き込みます

【型:文字列】クラスの【プロパティ名:文字列】という【自分】からプロパティ取得メソッドを取得

プロパティを取得するメソッドを取得します

【型:文字列】クラスの【プロパティ名:文字列】という【自分】からプロパティ設定メソッドを取得

プロパティを取得するメソッドを取得します

【自分】へ終了命令を書き込む

終了命令(Ret)を書き込みます

【自分】へ空参照を書き込む

空参照(null)をスタックに積む命令を書き込みます

【自分】へポップ命令を書き込む

スタックからデータをひとつ取り出す命令(Pop)を書き込みます

【型:文字列】で【自分】へボックス化命令を書き込む

ボックス化命令(Box)を書き込みます

【型:文字列】で【自分】へアンボックス化命令を書き込む

アンボックス化命令(Unbox)を書き込みます

【型】を【自分】へ生成する命令を書き込む

【自分】へメッセージ表示を書き込む

MessageBox.Showメソッドを呼び出す命令を書き込みます

【自分】へコンソール出力を書き込む

Console.Write(string)メソッドを呼び出す命令を書き込みます

【自分】へコンソール入力を書き込む

Console.ReadLine()メソッドを呼び出す命令を書き込みます

【自分】へ一字出力を書き込む

Console.Write(char)メソッドを呼び出す命令を書き込みます

【自分】へ一字入力を書き込む

Console.Read()メソッドを呼び出す命令を書き込みます

【自分】へ新しいラベルを宣言する仮想機械ラベル

新しいラベルを宣言します

【自分】へラベルを書き込む仮想機械ラベル

現在位置に新しいラベルを付けます

【ラベル:仮想機械ラベル】を【自分】へ書き込む

現在位置に指定したラベルを付けます

【ラベル:仮想機械ラベル】へ【自分】に対して移動する命令を書き込む

無条件に指定したラベルへ移動する命令を書き込みます

【ラベル:仮想機械ラベル】へ【自分】に対して成立時移動する命令を書き込む

スタックからひとつ値を取り出して、その値が0以外であれば、指定したラベルへ移動する命令を書き込みます

【ラベル:仮想機械ラベル】へ【自分】に対して不成立移動する命令を時書き込む

スタックからひとつ値を取り出して、その値が0であれば、指定したラベルへ移動する命令を書き込みます

【ラベル一覧:仮想機械ラベルの配列】へ【自分】に対して選択移動する命令を書き込む

スタックからひとつ値を取り出して、指定したラベル一覧からその値にあたる番号のラベルへ移動する命令を書き込みます

【自分】へ整数文字列化を書き込む

スタックからひとつ値を取り出して、文字列化するメソッド(Int32.ToString())を呼び出すを書き込みます

【自分】へ文字列整数化を書き込む

スタックからひとつ値を取り出して、文字列化するメソッド(Int.Prase(String))を呼び出すを書き込みます

【自分】へ浮動小数文字列化を書き込む

スタックからひとつ値を取り出して、文字列化するメソッド(float.ToString())を呼び出すを書き込みます

【自分】へ文字列整数配列化を書き込む

スタックからひとつ値を取り出して、文字列化するメソッドを呼び出すを書き込みます

【型名:文字列】型【メソッド名:文字列】メソッドの【自分】へメソッド呼び出しを書き込む

【メソッド:仮想機械メソッド】メソッドの【自分】へメソッド呼び出しを書き込む

【メソッド:仮想機械メソッド】を【自分】へ呼び出す命令を書き込む

【メソッド】を【自分】へ呼び出す命令を書き込む

【値:文字列】を【自分】へ整数定数として書き込む

指定した値の整数をスタックに積む命令を書き込みます

【値:文字列】を【自分】へ浮動小数定数として書き込む

指定した値の浮動小数点をスタックに積む命令を書き込みます

【値:文字列】を【自分】へ文字列定数として書き込む

指定した値の文字列をスタックに積む命令を書き込みます

【引数番号】番目へ【仮引数名:文字列】という〈【参照属性】として〉【自分】で仮引数を設定する

仮引数の名前を設定します

【呼び出し:定義済みメソッド呼び出し】を【自分】へ書き込む

メソッド呼び出し命令を書き込みます

【呼び出し:仮メソッド呼び出し】を【自分】へ書き込む

メソッド呼び出し命令を書き込みます

【自分】でメソッド呼び出しを作る

このメソッドを呼び出すためのメソッド呼び出しを作ります

設定項目

設定項目   説明
名前 文字列 メソッドの名前

サンプルコード

1+2を計算するアセンブリを生成します。

実行例は、仮想機械ラベル定義済みメソッド呼び出しにもあります。

アセンブリ名は、「計算テスト.exe」

中間コード生成機でアセンブリ名を作って、プログラム本体とする
プログラム本体へ「メインクラス」というクラスを作って、メインクラスとする
メインクラスへ「main」という静的メソッドを作って、メインメソッドとする

整数であるメインメソッドへ変数を作って値とする
整数定数として1をメインメソッドへ書き込む
整数定数として2をメインメソッドへ書き込む
加算命令をメインメソッドへ書き込む

//Int32型をString型に変換します
メインメソッドに対して値へ変数書き込み命令を書き込む
メインメソッドへ値から変数参照命令を書き込む
整数文字列化をメインメソッドへ書き込む

//メッセージを表示します
メッセージ表示をメインメソッドへ書き込む

メインメソッドへポップ命令を書き込む
メインメソッドへ終了命令を書き込む

プログラム本体の開始メソッドは、メインメソッド
メインクラスを完成させる

プログラム本体を(プログラムのフォルダ)&アセンブリ名へ保存する

 

ページ先頭へ