Abstract: 汇编调用C语言
Keywords: 《30天自制操作系统》,Macbook,汇编调用C语言,C语言调用汇编
汇编语言函数用c语言调用
其实我们可以把这些在完成操作系统编写时写的函数称为库函数(注意:不是标准库函数),但是c在调用库函数(普通函数),压栈的顺序是从右向左的,这个是肯定,所以,参数出栈的时候先出来的是后面的参数,明白了这个问题,就很好理解io_out()函数参数的出栈和参数的使用了,还有函数如果有返回值,保存在eax(32位返回值),64位返回值保存在 eax 和edx中,edx保存高32位,eax保存低32位。
知道了这些,参数和返回值就已经搞定了,剩下的就是定义和具体代码的实现了,什么利用中断啊,MOV给你MOV给我啊的什么就可以自由发挥了。。看起来已经很酷了。。
函数定义,搜了一下,发现定义都不同,但都是写global声明下函数名(名字前面加下划线),然后以函数名为标号写下函数体,返回用ret(但有些函数好像不能用RET返回。。具体以后再说)。
还有就是函数指针,由于博主以前研究了好长时间指针,虽然不能说特别明白,但是看这个书上的指针还是没什么障碍,像什么2【p】这种访问方式,以前也都见过,如果有人这里有疑问推荐几本书:《c专家编程》《c陷阱与缺陷》《c和指针》都有详细描述,自己写个程序试试就行了,这里不再赘述。。。。