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;

有时间继续;

相关推荐
祈禾4 天前
计算机组成原理之编译、汇编、链接、解释
开发语言·汇编·笔记·学习
水饺编程6 天前
AT&T 汇编语言学习笔记开篇语
c语言·汇编·c++
iCxhust7 天前
8088单板机VScode集成开发环境使用方法二(汇编版)
汇编·单片机·微机原理·8088单板机
·薯条大王7 天前
经济实惠玩云服务器|一台云服务器多人共用,子账号配置教程
java·linux·运维·服务器·汇编·c++·python
txg6668 天前
VULOC:基于汇编切片的漏洞定位框架,精准锁定二进制中的危险代码
汇编·人工智能·深度学习·安全·网络安全
sunburn-9 天前
Java 队列全面详解:从入门到面试实战
java·开发语言·汇编·ide·idea
wechatbot88816 天前
企业微信API开发:登录-联系人查询-消息发送完整开发流程分享
汇编·微信·自动化·企业微信·ai编程·rpa
00后程序员张17 天前
iOS加固技术路线全面解析:Bitcode模式、源码模式与汇编模式对比及爱加密优势
android·汇编·ios·小程序·uni-app·cocoa·iphone
wechatbot88820 天前
解决企业微信官方 API 短板:iPad 协议全功能对接方案
java·汇编·windows·http·微信·企业微信
学逆向的22 天前
汇编——JCC指令
开发语言·汇编·网络安全