VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 433|回复: 1

[交流] 献丑了 C和ASM之结构体

[复制链接]
39_avatar_middle
最佳答案
0 
在线会员 发表于 2021-9-18 14:45:03 | 显示全部楼层 |阅读模式


PS:只是最基础的知识,大牛绕过,结构体在申明的时候就已经分配了内存,而且是全局变量

很多课本说了半天也全是概念。还是得自己看汇编代码才能了解程序的真谛。

  1. #include "stdio.h"
  2. #include "stdlib.h"


  3. struct stu  
  4. {
  5.         int numA;
  6.         int numB;
  7. }s1;




  8. int  Function1(int x,int y)
  9. {
  10.         int r;
  11.         s1.numA=0x1;
  12.         r=s1.numA+x+y;
  13.         return r;






  14. //        int x=s1.numA;
  15. //        int y=s1.numB;
  16. //        return x+y;

  17. }



  18. void main()
  19. {
  20.        
  21.         s1.numA=0x10;
  22.         s1.numB=0x20;
  23.         Function1(s1.numA,s1.numB);

  24.         getchar();
  25. }
复制代码



ASM:ps 太累了,就不手写裸函数了,直接COPY编译器的代码了

  1. main()
  2. {
  3. 00401078   mov         dword ptr [00427e30],10h
  4. 00401082   mov         dword ptr [00427e34],20h
  5. 0040108C   mov         eax,[00427e34]
  6. 00401091   push        eax
  7. 00401092   mov         ecx,dword ptr [00427e30]
  8. 00401098   push        ecx
  9. 00401099   call        @ILT+15(Function1) (00401014)

  10. }










  11. 00401020   push        ebp
  12. 00401021   mov         ebp,esp
  13. 00401023   sub         esp,44h
  14. 00401026   push        ebx
  15. 00401027   push        esi
  16. 00401028   push        edi
  17. 00401029   lea         edi,[ebp-44h]
  18. 0040102C   mov         ecx,11h
  19. 00401031   mov         eax,0CCCCCCCCh
  20. 00401036   rep stos    dword ptr [edi]
  21. 00401038   mov         dword ptr [00427e30],1
  22. 00401042   mov         eax,[00427e30]
  23. 00401047   add         eax,dword ptr [ebp+8]
  24. 0040104A   add         eax,dword ptr [ebp+0Ch]
  25. 0040104D   mov         dword ptr [ebp-4],eax
  26. 00401050   mov         eax,dword ptr [ebp-4]
  27. 00401053   pop         edi
  28. 00401054   pop         esi
  29. 00401055   pop         ebx
  30. 00401056   mov         esp,ebp
  31. 00401058   pop         ebp
  32. 00401059   ret
  33. 0040105A   int         3
  34. 0040105B   int         3
  35. 0040105C   int         3
  36. 0040105D   int         3
  37. 0040105E   int         3
  38. 0040105F   int         3
复制代码

评分

参与人数 1驿站币 +2 热心值 +2 收起 理由
58_avatar_small thzzl + 2 + 2 很给力!

查看全部评分





上一篇:献丑了,C和ASM(002)手写数组
下一篇:在窗口中绘制一条直线 有什么方法存储
85_avatar_middle
最佳答案
0 
online_vip 发表于 2021-9-19 12:08:00 | 显示全部楼层
学习一下献丑了 C和ASM之结构体
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号-4 )|网站地图wx_jqr

GMT+8, 2021-11-30 00:59

Powered by CcTry.CoM

© 2009-2021 cctry.com

快速回复 返回顶部 返回列表