第四天,写下汇编语言函数用c语言调用

       其实我们可以把这些在完成操作系统编写时写的函数称为库函数(注意:不是标准库函数),但是c在调用库函数(普通函数),压栈的顺序是从右向左的,这个是肯定,所以,参数出栈的时候先出来的是后面的参数,明白了这个问题,就很好理解io_out()函数参数的出栈和参数的使用了,还有函数如果有返回值,保存在eax(32位返回值),64位返回值保存在 eax 和edx中,edx保存高32位,eax保存低32位。

       知道了这些,参数和返回值就已经搞定了,剩下的就是定义和具体代码的实现了,什么利用中断啊,MOV给你MOV给我啊的什么就可以自由发挥了。。看起来已经很酷了。。

       函数定义,搜了一下,发现定义都不同,但都是写global声明下函数名(名字前面加下划线),然后以函数名为标号写下函数体,返回用ret(但有些函数好像不能用RET返回。。具体以后再说)。

       还有就是函数指针,由于博主以前研究了好长时间指针,虽然不能说特别明白,但是看这个书上的指针还是没什么障碍,像什么2[p]这种访问方式,以前也都见过,如果有人这里有疑问推荐几本书:《c专家编程》《c陷阱与缺陷》《c和指针》都有详细描述,自己写个程序试试就行了,这里不再赘述。。。。

 posted on 2013-11-27 19:07  TonyShengTan  阅读(79)  评论(0编辑  收藏  举报