在这里尝试了IL汇编字符串连接;
IL汇编字符串连接_bcbobo21cn的博客-CSDN博客
下面来看一下IL汇编整数相加;
大概的看一下一些资料,下面语句,
ldc.i4 20
ldc.i4 30
add
看上去像是,装载整数20到一个类似于堆栈的区域,然后再装载30,然后执行add,这样实现了2个整数相加;
先用记事本编辑代码如下,
cpp
.assembly extern mscorlib {}
.assembly Test
{
.ver 1:0:1:0
}
.module test.exe
.method static void main() cil managed
{
.maxstack 1
.entrypoint
ldc.i4 20
ldc.i4 30
add
call void [mscorlib]System.Console::Write (int32)
ret
}
保存为testadd.il,然后ilasm构建;

第一次写错了,ldc.i4 20,不是ldc.i4.20;
改好之后构建了exe,但是运行testadd.exe出错;

那会不会是头部这一段影响,
.assembly extern mscorlib {}
.assembly Test
{
. ver 1:0:1:0
}
.module test.exe
把文件名改为test.il,再构建出test.exe,运行test.exe,也是出错;

那先单独看一下这2句,
ldc.i4 30
call void [mscorlib]System.Console::Write (int32)
前一句有没有装载一个整数,后一句有没有输出该整数;
cpp
.assembly extern mscorlib {}
.assembly Test
{
.ver 1:0:1:0
}
.module test.exe
.method static void main() cil managed
{
.maxstack 1
.entrypoint
ldc.i4 307
call void [mscorlib]System.Console::Write (int32)
ret
}
构建并运行如下;可以装载整数,输出整数;下回继续;
