MSILプログラミングスレ

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
ひたすら手打ちでがんばるスレ
2デフォルトの名無しさん:04/09/23 22:52:41
MicroSoft Interpreter Language
3デフォルトの名無しさん:04/09/23 22:53:51
いい加減MSILって言い方やめれ。
ISO標準のCILだ。
4デフォルトの名無しさん:04/09/23 22:57:50
MicroSoft Itte-yoshi Language
5最凶VB厨房:04/09/23 23:00:46
インてリジェンッならングウィッジ
6デフォルトの名無しさん:04/09/24 14:38:42
CIL って何の略?
7デフォルトの名無しさん:04/09/24 14:41:53
早く誰かHellowolrdの手打ちして
8デフォルトの名無しさん:04/09/24 15:00:04
>>7 手打ちって何?
9デフォルトの名無しさん:04/09/24 15:04:47
>>8
1に聞け
10デフォルトの名無しさん:04/09/24 15:35:36
なんだよ、ニーモニック直うちのことかよ。
それともハンドアセンブルまでやらせるのかよ。

それはそうと、CILって何の略?
11デフォルトの名無しさん:04/09/24 15:36:20
>>10
機械語チョクウチ
12デフォルトの名無しさん:04/09/24 19:22:55
なんだよ、1 は立て逃げかよ

MSIL (Microsoft Intermediate Language)
CLR (Common Language Runtime)
CIL (Common Intermediate Language)
CLI (Common Lanuage Infrastructure)
FCL (Framework Class Library)

IL のコンパイラの作り方でも説明してくれよ
サンプルだけじゃよくわかんねぇよヽ(`Д´)ノ
13デフォルトの名無しさん:04/09/24 19:48:43
MFC(Microsoft Foundation Class)
WFC(Windows Foundation Class)
FCT(Football Club Tokyo)
14デフォルトの名無しさん:04/09/24 20:22:01
>>11 Z80しかできねーよ。
15デフォルトの名無しさん:04/09/25 02:49:20
class hellworld{
public static void Main(){
System.Console.WriteLine("HELL >>1");
}
}



.class private auto ansi beforefieldinit hellworld
extends [mscorlib]System.Object
{
.method public hidebysig static void Main() cil managed
{
.entrypoint
// コード サイズ 11 (0xb)
.maxstack 1
IL_0000: ldstr "HELL >>1"
IL_0005: call void [mscorlib]System.Console::WriteLine(string)
IL_000a: ret
} // end of method hellworld::Main

.method public hidebysig specialname rtspecialname
instance void .ctor() cil managed
{
// コード サイズ 7 (0x7)
.maxstack 1
IL_0000: ldarg.0
IL_0001: call instance void [mscorlib]System.Object::.ctor()
IL_0006: ret
} // end of method hellworld::.ctor

} // end of class hellworld
16デフォルトの名無しさん:04/09/25 02:52:28
【Console::WriteLineの実装】

.method public hidebysig static void WriteLine(string 'value') cil managed
{
// コード サイズ 12 (0xc)
.maxstack 8
IL_0000: call class System.IO.TextWriter System.Console::get_Out()
IL_0005: ldarg.0
IL_0006: callvirt instance void System.IO.TextWriter::WriteLine(string)
IL_000b: ret
} // end of method Console::WriteLine

【System.IO.TextWrite】
.method public hidebysig newslot virtual
instance void WriteLine(string 'value') cil managed
{
// コード サイズ 123 (0x7b)
.maxstack 6
.locals (int32 V_0,
int32 V_1,
char[] V_2)
IL_0000: ldarg.1
IL_0001: brtrue.s IL_000a
IL_0003: ldarg.0
IL_0004: callvirt instance void System.IO.TextWriter::WriteLine()
IL_0009: ret
IL_000a: ldarg.1
IL_000b: callvirt instance int32 System.String::get_Length()
IL_0010: stloc.0
IL_0011: ldarg.0
IL_0012: ldfld char[] System.IO.TextWriter::CoreNewLine
17デフォルトの名無しさん:04/09/25 10:25:18
IL ディスアセンブラの結果を載せるんじゃなくて、ニーモニック表きぼん

と、言ってみるテスト
18デフォルトの名無しさん:04/09/26 19:01:51
>17
Ilasm.exe を使えよ
19デフォルトの名無しさん:04/09/28 13:43:16
結局、 >>1 はどこ逝ったのかね

.assembly extern mscorlib {}
.assembly hello {}
.module hello.exe

.class private auto ansi HelloWorld
extends [mscorlib]System.Object
{
  .method public hidebysig static void Main() il managed
  {
    .entrypoint
    .maxstack 8
      ldstr "Hello CIL to 2ch world!"
      call void [mscorlib]System.Console::WriteLine(string)
      ret
  }
}

むしゃくしゃしてサンプルをほとんどそのまま書いた
hello.il って名前で保存して

ilasm /exe hello.il

ってやると、実行可能な hello.exe ができる
あまり反省していない
20デフォルトの名無しさん:04/09/29 12:06:36
21デフォルトの名無しさん:04/09/29 16:10:55
>20
thx
IL のキーワード一覧とか見あたらないから、助かった

最近はMSもおとなしくなったな。ちゃんと標準化団体を通して文句を言われないように
するところとか
22デフォルトの名無しさん:04/10/17 17:48:18
結局、死亡スレか
だが、実際、MSIL をちまちま書くよりも、.Net Framework のサンプルにあるように一度
C# あたりで書き直して、CSharp.Compiler を使った方が楽なんだよなぁ
23デフォルトの名無しさん:04/10/19 11:19:00
JVMってアセンブラないの?
24デフォルトの名無しさん:04/10/19 12:43:25
>23
JVM は Java 以外の言語で動くことは想定していないから、中間コードを必要としない
だから、いったん中間コードで吐いて最適化かけて、ということをしていない

アセンブラがない、っていうのがどういう意味かよくわからないが、Java の コンパイラは
ByteCode を直接出力すればいい。ByteCode のニーモニックについては、自分で
探してや
25デフォルトの名無しさん:04/10/19 21:10:19
>>24
最初のパラグラフは何が言いたいのか良くわからんが、
昔は、JavaコンパイラがはくJava Byte Code自体がいまいちだったので、組み込みの世界ではJava Byte Codeの段階で人手で最適化したりした。

26デフォルトの名無しさん:04/10/20 14:24:09
>25
>23 って、Java に MSIL に対応するものがないかって意味じゃないのか?
Java は別にCILで言語間を共通化する必要がないから、直接、ByteCode 出してる
だから JVM にとっての MSIL みたいなものはないぞといってるんだが

CLR では、各言語から IL が出た後に、もう一回、最適化かけてるけど、Java は言語に
依存してるから、最初からちゃんと最適化した ByteCode を出す努力してるだろう?
昔はいまいちだったんだろうけど、Sun もがんばって高速化してるわけだし
27デフォルトの名無しさん:04/10/20 17:31:04
最適化云々は置いておくとして、JVMのバイトコード用の
アセンブラとかないの?見たことないんだけど。
Sunが許さないのかな。
28デフォルトの名無しさん:04/10/20 21:50:20
>27
アセンブラ? 正直何を言っているのかよくわからん
かなり意味がないけど、自分で作ったら?
http://www.apache.org/~tetsuya/jakarta/bcel/manual.html
29デフォルトの名無しさん:04/10/21 00:16:56
>>27
バイトコードアセンブラなら2、3種類ぐらいあったと思うけど。
30デフォルトの名無しさん:04/10/21 10:39:53
Shujit あたりからJITコンパイラをぱちくるとか
・・・って、Java スレで聞いた方が親身になって教えてくれると思うぞ
よく考えると、ここは彼らの嫌いなM$すれだからな〜
31デフォルトの名無しさん:04/10/23 01:16:09
>>26
なにを言っているのかよくわからん。ByteCode をはく高級言語は、Javaしかないが原理的には他の言語も作ることができる。
そもそも、いまのJavaVMの実装は、CLRと同じようにJITコンパイラになっているし、組み込みだとByteCode 自体を直接実行するCPUを使っている場合もある。
JITコンパイラの実装法の中には、IKVMのように、ByteCode をJITでMSILに変換(コンパイル)してそれをCLRで実行させるものも存在する。
32デフォルトの名無しさん:04/10/23 14:52:33
>ByteCode をはく高級言語
結構あるような気がするが…MJのような拡張Javaだけでなく、Adaとかも
33デフォルトの名無しさん:04/10/23 21:17:08
>>32
不勉強で申し訳ない。ほかにどんなのがあるんですか?
34デフォルトの名無しさん:04/10/23 22:21:59
ゲイシの手のひらで遊んでいる内は知ることがないだろうけど、
Jythonとかそれなりの利用者がいるJavaバイトコードをはく高級言語はままあるわけなんだがな。
35デフォルトの名無しさん:04/10/23 23:10:23
>>34
Jythonぐらいは、使ったことはなかったがしっていた。JRubyと同じようなものとおもっとった。
ほかにもたくさんありますし、一部普及しているものもあるようですね。勉強になりした。
いずれにせよ、JRE∽CLR, ByteCode∽IL と考えていいんですね。
36デフォルトの名無しさん:04/11/06 23:36:45
>>34
Javaも、SunとIBMの手のひらの上というところは、似たようなもの。
37デフォルトの名無しさん:04/11/07 12:41:14
バイトコードのアセンブラも知らないのか。
38”管理”:04/11/21 03:26:14
 
39デフォルトの名無しさん:05/01/11 14:47:52
フツーのx86の逆汗みたいにアドレスやHEXまで見せてくれる逆汗ないの?
40デフォルトの名無しさん:05/01/11 17:48:38
41デフォルトの名無しさん
MSILネイティブOSキタ━━━━(゚∀゚)━━━━ッ!!
http://pc5.2ch.net/test/read.cgi/os/1105442577/