汇编网首页登录博客注册
tomato的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
学习动态
友情链接

[2012-05-19 23:54] 【原】由int型数据如何转化为long型数据引发的思考?

  在高级语言的函数调用中,如果参数定义的类型为长整形,而实际传过去的类型为整形,那该如何处理呢?

  这个问题我们可以在汇编层面去研究一下,可以写个C语言函数调用,比如,

  图

  在这个程序中,add函数的两个参数和返回值都是long类型的,而main函数中我们传递的却是两个int型数据,而这样就出现了类型不匹配的情况,但是,C编译器是不会报错的,是完全可以通过编译的,是因为这种int型和long型的数据之间,编译器会自动进行类型转换。我们看一下下面这段代码。

  图
  图

  上面这段代码即为那段C语言程序对应的汇编代码,有些汇编基础的同学不妨试着去理解一下这段代码的执行功能。

  我明白是怎么转换的了,我就不再这里说明白了,主要是想给有一定基础的汇编学习者留些思考的空间。

  我提几个问题吧。

  1.这个汇编程序中分别对应C程序的哪部分?哪些是main函数对应的代码?哪些是add函数对应的代码?

  2.定义的变量存放在哪里了?参数存放在哪里了?

  3.int型数据和long型数据不匹配的问题是如何解决的呢?

  4.函数之间的参数是如何传递的?

  以上这些问题,没有汇编语言基础的计算机学习者是很难说清楚是怎么回事的,所以,从这一点上来说,汇编语言的基础学习是多么重要,趋向本质!

  欢迎大家来寒舍讨论交流。O(∩_∩)O~
评论次数(3)  |  浏览次数(774)  |  类型(计算机学习) |  收藏此文  | 

[  fpamc   发表于  2012-05-20 07:39  ]

有点……看不清

[  tomato   发表于  2012-05-20 07:46  ]

哪里看不清?我这里挺清楚的......

[  fpamc   发表于  2012-05-20 10:16  ]

图……
难道是我手机问题(*>.<*)……

 
 请输入验证码  (提示:点击验证码输入框,以获取验证码