IL汇编 ldarg 指令学习

IL汇编代码,

cpp 复制代码
.assembly  extern  mscorlib {}
.assembly MathLib
{
    .ver  1 : 0 : 1 : 0
}

.module MathLib.dll

.namespace  MyMath
{    
    .class   public  ansi auto MathClass extends [mscorlib]System.Object
    {        
        .method  public  int32 GetSquare(int32) cil managed
        {
            .maxstack  3
            ldarg.0     //  加载对象的 this 指针到堆栈上
            ldarg.1     //  实例方法的实际的参数索引总是从 1 开始
            ldarg.1
            mul
            ret        
        }
    }
}

构建为一个dll如下;dll包含一个方法,计算一个整数的平方并返回值;

然后做一个测试程序;

cpp 复制代码
using System;
using MyMath;
 
class Program
{
 
static void Main(string[] args)
{
 
    int a=9;
    int i = MathClass.GetSquare(a); 
    Console.WriteLine(i); 
    Console.ReadKey();
}
}

命令行构建此测试程序;

命令行构建时引用到外部的dll需要用 /r 指定dll文件名,见,

C# csc构建dll 和 csc构建时指定dll_bcbobo21cn的博客-CSDN博客

然后出现下图错误;

一时还不知道怎么弄;

先学习一下IL汇编指令;

ldarg.n

把第n个参数装入堆栈;在非静态函数中,第0个参数是一个隐含的参数,代表this;

mul指令就是乘法;

相关推荐
2401_861615285 小时前
跨平台的ARM 和 x86 Docker 镜像:汇编语言实验环境搭建
linux·汇编·ubuntu·docker·容器
大P哥阿豪7 小时前
Go defer(二):从汇编的角度理解延迟调用的实现
开发语言·汇编·后端·golang
花小璇学linux7 小时前
imx6ull-裸机学习实验1——汇编LED灯实验
linux·汇编·imx6ull·arm裸机开发
无小道18 小时前
c++-引用(包括完美转发,移动构造,万能引用)
c语言·开发语言·汇编·c++
liulilittle2 天前
C++ i386/AMD64平台汇编指令对齐长度获取实现
c语言·开发语言·汇编·c++
工业互联网专业2 天前
汇编与接口技术:8259中断实验
汇编·单片机·嵌入式硬件·8259中断实验
small_wh1te_coder3 天前
硬件嵌入式学习路线大总结(一):C语言与linux。内功心法——从入门到精通,彻底打通你的任督二脉!
linux·c语言·汇编·嵌入式硬件·算法·c
Ronin-Lotus15 天前
微处理器原理与应用篇---ARM常见汇编指令
汇编·arm开发·微处理原理与应用
永夜的黎明18 天前
【二进制安全作业】250616课上作业1-栈溢出漏洞利用
c语言·汇编·安全
Geometry Fu20 天前
物联网控制技术 知识点总结 第三章 汇编语言 第四章 C51语言
汇编·物联网·51单片机