win7上的c和asm互调用
最近在研究操作系统,《自己动手写操作系统》上第5章讲了asm和c函数之间互调用,目的是使用c来写操作系统内核的代码,毕竟用汇编写代码还是很费时间的事。 配置Linux开发环境实在是太麻烦,要装虚拟机,还要配置老半天。于是就想能都在windows环境下实现互调用,很自然的想到了mingw交叉环境。于是下了一个win32版本的nasm编译器,用nasm编译汇编,用gcc编译c,查了一下n
·
最近在研究操作系统,《自己动手写操作系统》上第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下同样好用
更多推荐
已为社区贡献3条内容
所有评论(0)