了解IL汇编循环

IL代码,

cpp 复制代码
.assembly extern mscorlib {}
 
 .assembly Test
 {
     .ver 1:0:1:0
 }
 .module test.exe
  
 .method static void main() cil managed
 {
     .maxstack 8
     .entrypoint
     .locals init (int32, int32)
   
     ldc.i4 4
     stloc.0        //Upper    limit of the Loop, total 5 
     ldc.i4 0 
     stloc.1        //Initialize the Starting of loop 

Start:     
     //Check if the Counter exceeds
     ldloc.1 
     ldloc.0 
     bgt Exit //If Second variable exceeds the first variable, then exit

     ldloc.1
     call void [mscorlib]System.Console::WriteLine(int32)

     //Increase the Counter
     ldc.i4 1
     ldloc.1
     add
     stloc.1
     br Start
Exit:    
     ret
}

构建运行如下;

我还不是太理解,循环的开始和结束值是不是装入栈;循环变量加1也是在栈上操作;循环中啥也没干,只是输出了循环变量值;bgt、br是跳转语句;有时间继续;

相关推荐
weixin_537590452 小时前
《C程序设计语言》练习答案(练习1-13)
c语言·开发语言·c#
a17798877122 小时前
小程序上传图像失败
小程序·c#
JosieBook4 小时前
【C#】C# 所有关键字总结
开发语言·算法·c#
我是唐青枫4 小时前
C#.NET ConcurrentStack<T> 深入解析:无锁栈原理、LIFO 语义与使用边界
网络·c#·.net
黑棠会长5 小时前
ABP框架09.数据安全与合规:审计日志与实体变更追踪
分布式·安全·架构·c#·abp
JMchen1235 小时前
Android NDK开发从入门到实战:解锁应用性能的终极武器
android·开发语言·c++·python·c#·android studio·ndk开发
IT小哥哥呀6 小时前
基于windows的个人/团队的时间管理工具
windows·c#·wpf·时间管理
JosieBook8 小时前
【C#】C# 访问修饰符与类修饰符总结大全
前端·javascript·c#
星夜泊客8 小时前
C# : 引用类型都存在堆上吗
unity·c#
chiwei_hua8 小时前
如何在 Blazor Web 前端中使用 C# 进行数据交互?
前端·c#·交互