您的位置:首页 > 其它

IL汇编语言介绍

2013-01-13 18:49 218 查看
在IL汇编语言中,任何语句都是以一个点号(.)开始的,以此告诉编译器这是一种特殊的指令。

.assembly指令告诉编译器,我们准备去用一个外部的类库(不是我们自己写的,而是提前编译好的)

.entrypoint指令告诉编译器去把这个函数标记为整个应用程序的入口点(EntryPoint),也就是执行这个应用程序时最先执行的函数。

.locals定义了局部变量

.method标记告诉编译器我们准备定义一个方法

.maxstacknumber它告诉编译器我们要加载到内存(实际是评估堆栈)中去的项的最大数目

ld==loadst==setret==returnarg==argument
beq
(==),
bne
(!=),
bge
(>=),
bgt
(>),
ble
(<=),
blt
(<),还有
brfalse
(如果栈顶的元素是0),
brtrue(如果栈顶的元素非0).
stloc.index把栈顶元素赋值给locals[index]可以通过索引也可以通过变量名字来访问

ldstr指令是用来把一个字符串加载到内存或评估堆栈中

cilmanaged指令告诉编译器,把这段代码当作托管代码进行编译。

ret表示从方法中返回。

使用它
1:.assemblyexternmscorlib{}
2:.assemblyexternMathLib{.ver1:0:1:0}
3://
4://restcodehere
5://
6:.methodstaticvoidMain()cilmanaged
7:{
8:.maxstack2
9:.entrypoint
10:.localsinit(valuetype[MathLib]HangamaHouse.MathClassmclass)
11:
12:ldlocamclass
13:ldc.i45
14:callinstanceint32[MathLib]HangamaHouse.MathClass::GetSquare(int32)
15:ldstr"TheSquareof5Returned:"
16:callvoid[mscorlib]System.Console::Write(string)
17:callvoid[mscorlib]System.Console::WriteLine(int32)
18:
19:ret
20:}[/code]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: