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指令就是乘法;

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