MSILプログラミングスレ
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNG0002デフォルトの名無しさん
NGNG0003デフォルトの名無しさん
NGNGISO標準のCILだ。
0004デフォルトの名無しさん
NGNG0005最凶VB厨房
NGNG0006デフォルトの名無しさん
NGNG0007デフォルトの名無しさん
NGNG0008デフォルトの名無しさん
NGNG0009デフォルトの名無しさん
NGNG1に聞け
0010デフォルトの名無しさん
NGNGそれともハンドアセンブルまでやらせるのかよ。
それはそうと、CILって何の略?
0011デフォルトの名無しさん
NGNG機械語チョクウチ
0012デフォルトの名無しさん
NGNGMSIL (Microsoft Intermediate Language)
CLR (Common Language Runtime)
CIL (Common Intermediate Language)
CLI (Common Lanuage Infrastructure)
FCL (Framework Class Library)
IL のコンパイラの作り方でも説明してくれよ
サンプルだけじゃよくわかんねぇよヽ(`Д´)ノ
0013デフォルトの名無しさん
NGNGWFC(Windows Foundation Class)
FCT(Football Club Tokyo)
0014デフォルトの名無しさん
NGNG0015デフォルトの名無しさん
NGNGpublic 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
0016デフォルトの名無しさん
NGNG.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
0017デフォルトの名無しさん
NGNGと、言ってみるテスト
0018デフォルトの名無しさん
NGNGIlasm.exe を使えよ
0019デフォルトの名無しさん
NGNG.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 ができる
あまり反省していない
0021デフォルトの名無しさん
NGNGthx
IL のキーワード一覧とか見あたらないから、助かった
最近はMSもおとなしくなったな。ちゃんと標準化団体を通して文句を言われないように
するところとか
0022デフォルトの名無しさん
NGNGだが、実際、MSIL をちまちま書くよりも、.Net Framework のサンプルにあるように一度
C# あたりで書き直して、CSharp.Compiler を使った方が楽なんだよなぁ
0023デフォルトの名無しさん
NGNG0024デフォルトの名無しさん
NGNGJVM は Java 以外の言語で動くことは想定していないから、中間コードを必要としない
だから、いったん中間コードで吐いて最適化かけて、ということをしていない
アセンブラがない、っていうのがどういう意味かよくわからないが、Java の コンパイラは
ByteCode を直接出力すればいい。ByteCode のニーモニックについては、自分で
探してや
0025デフォルトの名無しさん
NGNG最初のパラグラフは何が言いたいのか良くわからんが、
昔は、JavaコンパイラがはくJava Byte Code自体がいまいちだったので、組み込みの世界ではJava Byte Codeの段階で人手で最適化したりした。
0026デフォルトの名無しさん
NGNG>23 って、Java に MSIL に対応するものがないかって意味じゃないのか?
Java は別にCILで言語間を共通化する必要がないから、直接、ByteCode 出してる
だから JVM にとっての MSIL みたいなものはないぞといってるんだが
CLR では、各言語から IL が出た後に、もう一回、最適化かけてるけど、Java は言語に
依存してるから、最初からちゃんと最適化した ByteCode を出す努力してるだろう?
昔はいまいちだったんだろうけど、Sun もがんばって高速化してるわけだし
0027デフォルトの名無しさん
NGNGアセンブラとかないの?見たことないんだけど。
Sunが許さないのかな。
0028デフォルトの名無しさん
NGNGアセンブラ? 正直何を言っているのかよくわからん
かなり意味がないけど、自分で作ったら?
http://www.apache.org/~tetsuya/jakarta/bcel/manual.html
0029デフォルトの名無しさん
NGNGバイトコードアセンブラなら2、3種類ぐらいあったと思うけど。
0030デフォルトの名無しさん
NGNG・・・って、Java スレで聞いた方が親身になって教えてくれると思うぞ
よく考えると、ここは彼らの嫌いなM$すれだからな〜
0031デフォルトの名無しさん
NGNGなにを言っているのかよくわからん。ByteCode をはく高級言語は、Javaしかないが原理的には他の言語も作ることができる。
そもそも、いまのJavaVMの実装は、CLRと同じようにJITコンパイラになっているし、組み込みだとByteCode 自体を直接実行するCPUを使っている場合もある。
JITコンパイラの実装法の中には、IKVMのように、ByteCode をJITでMSILに変換(コンパイル)してそれをCLRで実行させるものも存在する。
0032デフォルトの名無しさん
NGNG結構あるような気がするが…MJのような拡張Javaだけでなく、Adaとかも
0033デフォルトの名無しさん
NGNG不勉強で申し訳ない。ほかにどんなのがあるんですか?
0034デフォルトの名無しさん
NGNGJythonとかそれなりの利用者がいるJavaバイトコードをはく高級言語はままあるわけなんだがな。
0035デフォルトの名無しさん
NGNGJythonぐらいは、使ったことはなかったがしっていた。JRubyと同じようなものとおもっとった。
ほかにもたくさんありますし、一部普及しているものもあるようですね。勉強になりした。
いずれにせよ、JRE∽CLR, ByteCode∽IL と考えていいんですね。
0036デフォルトの名無しさん
NGNGJavaも、SunとIBMの手のひらの上というところは、似たようなもの。
0037デフォルトの名無しさん
NGNG0038”管理”
NGNG0039デフォルトの名無しさん
NGNG0040デフォルトの名無しさん
NGNGttp://www.gir-lab.com/pukiwiki/pukiwiki.php?PE%20Analyzer
0041デフォルトの名無しさん
NGNGhttp://pc5.2ch.net/test/read.cgi/os/1105442577/
■ このスレッドは過去ログ倉庫に格納されています