最近在研究操作系统,《自己动手写操作系统》上第5章讲了asm和c函数之间互调用,目的是使用c来写操作系统内核的代码,毕竟用汇编写代码还是很费时间的事。
    配置Linux开发环境实在是太麻烦,要装虚拟机,还要配置老半天。于是就想能都在windows环境下实现互调用,很自然的想到了mingw交叉环境。于是下了一个win32版本的nasm编译器,用nasm编译汇编,用gcc编译c,查了一下nasm的编译选项-f可以指定asm文件的目标格式,估计可行,但考虑到mingw是交叉环境,感觉上还是用cl.exe来编c文件比较好,反正nasm也支持导出win32格式的obj文件。试了一下可行,现将代码贴上来。一共三个文件:bar.c, foo.asm, makefile.内容如下:
1. bar.c

2. foo.asm

 

3. makefile

 

这个案例告诉我们:
1. c文件编译成obj文件,导出函数的名称会加“_”
2. 由于中间格式都是obj,故可以互相连接
3. make工具在windows下同样好用 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐