在高级语言的函数调用中,如果参数定义的类型为长整形,而实际传过去的类型为整形,那该如何处理呢?
这个问题我们可以在汇编层面去研究一下,可以写个C语言函数调用,比如,
在这个程序中,add函数的两个参数和返回值都是long类型的,而main函数中我们传递的却是两个int型数据,而这样就出现了类型不匹配的情况,但是,C编译器是不会报错的,是完全可以通过编译的,是因为这种int型和long型的数据之间,编译器会自动进行类型转换。我们看一下下面这段代码。
上面这段代码即为那段C语言程序对应的汇编代码,有些汇编基础的同学不妨试着去理解一下这段代码的执行功能。
我明白是怎么转换的了,我就不再这里说明白了,主要是想给有一定基础的汇编学习者留些思考的空间。
我提几个问题吧。
1.这个汇编程序中分别对应C程序的哪部分?哪些是main函数对应的代码?哪些是add函数对应的代码?
2.定义的变量存放在哪里了?参数存放在哪里了?
3.int型数据和long型数据不匹配的问题是如何解决的呢?
4.函数之间的参数是如何传递的?
以上这些问题,没有汇编语言基础的计算机学习者是很难说清楚是怎么回事的,所以,从这一点上来说,汇编语言的基础学习是多么重要,趋向本质!
欢迎大家来寒舍讨论交流。O(∩_∩)O~
- [游客] 原来如此,以前做的时候也是一跳而过 01/10 23:37
- [游客] 赞 03/19 16:36
- [xzg6145] 我到了课程设计1,后面内容比较容易,等学完再复习下,然后写几个小游戏得瑟下,感觉以后很美好!!! 03/26 10:55
- [xiaoyao2012] 人情情人,人随情,情走人止 11/02 15:53
- [fpamc] 回看这篇文章。。 感受颇有不同。。。 我会继续往下走。。。 06/16 10:14
- [dxiaolin] 受教了 05/31 21:21
- [tomato] 支持你弄个chm出来。 05/29 16:33
- [fpamc] 收藏一下……有时间无聊了就弄chm`(*∩_∩*)′ 05/29 14:16
- [tomato] 这些命令刚动手实验了一遍,收获还是蛮大的。 05/29 13:04
- [chinatree] 在c中取段地址: 例: #include <stdio.h> f1() { re 05/27 10:00
- [游客] [url=http://www.banjia126.com/banjiachangshi/92.ht 07/26 23:46
- [jeremy] 能加你扣扣吗?我的469614823 08/07 14:36
- [e56004474] 好久不见tomato 活跃拉。。 06/18 13:39
- [fpamc] 正在研究17章…… 近期路线是…… 17章实验--复习-滚屏算法-截取中断来应用动态时间-复习- 05/29 14:19
- [xuehuihui] 请问检测点2.2的填空地(2)题第一个空到底是10001H对 还是1001H 对?谢谢 急 05/15 16:34
- [gnunix] 我的检测点3.2第二小题的sp设置的有问题吧? 05/13 09:48
- [gnunix] 谢谢番茄老师的提醒,我会改进的! 05/12 12:20
- [fpamc] 好久没见老师了。每当提交完作业,都希望老师快速的批阅。得到老师小小的夸奖。看见同学们都在努力学习,相 05/05 23:16
- [fpamc] 会的,我会的,我一定会做出来的,而且做到我内心所想的,更重要的,不会让tomato老师失望。 我想 04/21 08:42
- [sbxinran] 谢谢tomato老师给我检查作业,如果我的分析方法有错误还请您多指点指点 04/11 12:43