如何在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 }

  运行结果:

  

posted @ 2012-05-26 12:37  牛棚琐思  阅读(1821)  评论(2编辑  收藏  举报

牛棚锁思 | 改变习惯的一点点