1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ilasmでstack machine その33

Posted at

概要

ilasmでstack machineやってみた。
練習問題やってみた。

練習問題

ilasmで湯婆婆を書け。

サンプルコード

.assembly extern mscorlib {}
.assembly yuba {}
.method public static void main() cil managed {
.maxstack 16
.entrypoint
.locals init (class [mscorlib]System.Random r, string str)
	ldstr "契約書\r\n"
	call void [mscorlib]System.Console::WriteLine(string)
	ldstr "甲は油屋当主として、乙を油屋に雇用することを契約し、\r\n"
	call void [mscorlib]System.Console::WriteLine(string)
	ldstr "労働に伴う対価の支払いを右の通り、約定する。\r\n"
	call void [mscorlib]System.Console::WriteLine(string)
	ldstr "なお、一日の労働の対価は金百円とする。\r\n"
	call void [mscorlib]System.Console::WriteLine(string)
	ldstr "甲 油屋当主 湯婆婆\r\n"
	call void [mscorlib]System.Console::WriteLine(string)
	ldstr "乙\r\n"
	call void [mscorlib]System.Console::WriteLine(string)
	ldstr "契約書だよ。そこに名前を書きな。"
	call void [mscorlib]System.Console::WriteLine(string)
	call string [mscorlib]System.Console::ReadLine()
	dup
	dup
	stloc str
	ldstr "フン。"
	call void [mscorlib]System.Console::Write(string)
	call void [mscorlib]System.Console::Write(string)
	ldstr "というのかい。贅沢な名だねぇ。"
	call void [mscorlib]System.Console::WriteLine(string)
	newobj instance void [mscorlib]System.Random::.ctor()
	ldc.i4 2
	callvirt instance int32 [mscorlib]System.Random::Next(int32)
	ldloc str
	callvirt instance int32 [mscorlib]System.String::get_Length()
	rem
	ldc.i4 1
	callvirt instance string [mscorlib]System.String::Substring(int32, int32)
	dup
	dup
	ldstr "今からお前の名前は"
	call void [mscorlib]System.Console::Write(string)
	call void [mscorlib]System.Console::Write(string)
	ldstr "だ。いいかい、"
	call void [mscorlib]System.Console::Write(string)
	call void [mscorlib]System.Console::Write(string)
	ldstr "だよ。分かったら返事をするんだ、"
	call void [mscorlib]System.Console::Write(string)
	call void [mscorlib]System.Console::Write(string)
	ldstr "!!"
	call void [mscorlib]System.Console::WriteLine(string)
	ret
}




実行結果

>yuba
契約書

甲は油屋当主として、乙を油屋に雇用することを契約し、

労働に伴う対価の支払いを右の通り、約定する。

なお、一日の労働の対価は金百円とする。

甲 油屋当主 湯婆婆

乙

契約書だよ。そこに名前を書きな。
腹美恵子
フン。腹美恵子というのかい。贅沢な名だねぇ。
今からお前の名前は美だ。いいかい、美だよ。分かったら返事をするんだ、美!!

以上

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?