zoukankan      html  css  js  c++  java
  • 如何在C++中插入汇编代码 Demo(只有两个参数的函数调用)

           如何在C++中插入汇编代码 (内联汇编)Demo(只有两个参数的函数调用)

                                                                   By 任帅(Samren)

      最近需要在C++中插入汇编代码,具体要求是这样的:调用函数时,参数并没有生成,所以需要先生成参数,压入堆栈,最后调用函数地址。

      代码如下:

     1 #include <stdio.h>
     2 #include <vector>
     3 
     4 using namespace std;
     5 
     6 void fun(int x ,int y)
     7 {
     8     int a = 0;
     9     a = x-y;
    10     printf("test:%d\n",a);
    11 }
    12 
    13 void main()
    14 {
    15     vector<int> vParam;
    16     int ESP_size = 0;
    17     int temp;
    18 
    19     vParam.push_back (8);
    20     vParam.push_back (5);
    21     
    22     //把参数从右往左压入堆栈
    23     for (int i = vParam.size ()-1;i>=0;i--)
    24     {
    25         temp = vParam.at (i);
    26         ESP_size+=sizeof(temp);
    27         __asm{
    28             mov edx, temp;
    29             push edx;
    30         }
    31     }
    32     //call 函数地址,执行函数,记得把ESP指针恢复
    33     __asm{
    34         call fun
    35         mov  eax, ESP_size
    36         add esp, eax
    37     }
    38 }

      运行结果:

      

  • 相关阅读:
    屏幕适配问题
    对八大排序算法的补充说明
    基数排序
    归并排序
    快速排序
    简单选择排序
    堆排序
    希尔排序
    直接插入排序
    (转)Android APK反编译详解
  • 原文地址:https://www.cnblogs.com/bull_think/p/2519174.html
Copyright © 2011-2022 走看看