关于在IAR中的c程序与汇编代码文件编译的疑问

[复制链接]
1810|4
 楼主| soulmist 发表于 2016-9-27 09:06 | 显示全部楼层 |阅读模式
一般来说c要调用其它文件中的函数势必要调用其相对应的头文件,但是如果是c要调用一个汇编文件的函数时候该怎么做?

比如在ucos-ii 代码中,有一个os_cpu_a.s的文件,该汇编文件主要是做任务切换 保留堆栈的高频使用的汇编代码 其中用到C文件中的函数都在开头进行的了申明。
如:
[img=402,200]data:image/png;base64,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**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" >切换的汇编函数
上面这个OSCtxSw这个函数在os_cpu.h中有原型 ,然后在os_cpu_a.asm中实现 这样是如何做到的? 编译器如何识别以及实现这一内容?



 楼主| soulmist 发表于 2016-9-27 09:09 | 显示全部楼层
求大神指点迷津
 楼主| soulmist 发表于 2016-9-27 09:19 | 显示全部楼层
没有人嘛
john_lee 发表于 2016-9-27 10:13 | 显示全部楼层
这个是“链接器”的工作。
编译器只记录调用的函数的名称,链接器使用这个名称在多个文件之间查找,然后确定地址。
 楼主| soulmist 发表于 2016-9-27 10:52 | 显示全部楼层
john_lee 发表于 2016-9-27 10:13
这个是“链接器”的工作。
编译器只记录调用的函数的名称,链接器使用这个名称在多个文件之间查找,然后确 ...

谢谢! 后来找了C与汇编混合编程的仔细看了下 ,是你这个意思
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

122

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部