IL汇编ldc指令学习

ldc指令是把值送到栈上,

说明如下,

ldc.i4 将所提供的int32类型的值作为int32推送到计算堆栈上;

ldc.i4.0 将数值0作为int32推送到计算堆栈上;

...

ldc.i4.8 将数值8作为int32推送到计算堆栈上;

ldc.i4.m1 将数值-1作为int32推送到计算堆栈上;

ldc.i4.s 将提供的int8值作为int32推送到计算堆栈上(短格式);

ldc.i4 99,这样是把数值99送到栈上;

ldc.i4.s,也是把值送到栈上,但是需要提供的是一个字节长的整型;

i4是数据类型助记符,是指4字节的整型;s则是指 Single Byte ;

ldc.i4.s 11,这样是把数值11送到栈上;

ldc.i4.0 到 ldc.i4.8,是直接送最后的这个数值,0-8,到栈上;

示例;

cpp 复制代码
.assembly extern mscorlib {}
 
 .assembly Test
 {
     .ver 1:0:1:0
 }
 .module test.exe
  
 .method static void main() cil managed
 {
     .maxstack 12
     .entrypoint
     
     ldc.i4 202
     call void [mscorlib]System.Console::Write (int32)
     ldc.i4 303
     call void [mscorlib]System.Console::Write (int32)
     ldc.i4.6
     call void [mscorlib]System.Console::Write (int32)
     ldc.i4.5
     call void [mscorlib]System.Console::Write (int32)
     ldc.i4.m1
     call void [mscorlib]System.Console::Write (int32)
     ldc.i4.s 3000
     call void [mscorlib]System.Console::Write (int32)
     ret
 }

先把202送到栈上,然后输出;再把303送到栈上,然后输出;

然后把数值6送到栈上,然后输出;再把数值5送到栈上,然后输出;

再把数值-1送到栈上,然后输出;

然后看一下,ldc.i4.s 3000,会输出什么;带了.s之后需要提供一个字节长的整型,单字节整型的最大值是255;

运行如下;

没有输出回车换行,数字都是连在一起的,最后一次输出-72,倒数第二次输出-1;

有时间继续;

相关推荐
我在人间贩卖青春14 天前
汇编之伪指令
汇编·伪指令
我在人间贩卖青春14 天前
汇编之伪操作
汇编·伪操作
济61714 天前
FreeRTOS基础--堆栈概念与汇编指令实战解析
汇编·嵌入式·freertos
myloveasuka14 天前
汇编TEST指令
汇编
我在人间贩卖青春14 天前
汇编编程驱动LED
汇编·点亮led
我在人间贩卖青春14 天前
汇编和C编程相互调用
汇编·混合编程
myloveasuka15 天前
寻址方式笔记
汇编·笔记·计算机组成原理
请输入蚊子15 天前
《操作系统真象还原》 第六章 完善内核
linux·汇编·操作系统·bochs·操作系统真像还原
myloveasuka15 天前
指令格式举例
汇编·笔记·计算机组成原理
我在人间贩卖青春16 天前
汇编之分支跳转指令
汇编·arm·分支跳转