繁体中文
高级搜索
 
首页 | 电子技术应用 | 行业最新动态 | 行业最新产品 | 软件资料下载 | 电路图纸欣赏 | 博客文章精选 | 电子精品论坛 | 电子技术贴吧

当前位置:首页 >> 博客文章精选 >> 单片机-----博客 >> KeilC中的混合語言編程
KeilC中的混合語言編程
作者:   来源: 发表时间:2006-12-08  字号:  


 大家對Keil C應該已經非常熟悉了,但是現在看起來用C語言的往往比用ASM的人多一些。而即使有些一直用ASM的人卻對C不大了解。
  從我個人的角度來看,C語言有ASM不可比擬的優勢。主要體現在它的可讀性非常強,因此對於整理程序員的思路,以及處理複雜的算法和數據結構有著天然的優勢。ASM由於是機器語言,C語言在程序時間和代碼效率的控制上有難以與其比擬。
  但是在複雜工業控制方面,卻往往需要兩者兼顧,如果只是用C語言,則無法滿足控制系統中的時間和效率的要求;若只是用ASM語言,則完成一個大項目會非常花時間,同時代碼的維護和升級也異常的困難。
  因此本人在此將個人的混合語言編程的經驗寫下來,以省卻大家的摸索時間。
  一個合理的程序,應該是程序的主體用C來完成,而對時間和效率敏感的部分用ASM完成。因此,個人建議將某些重要的子程序用ASM封裝成C代碼的形式,如此即可兼顧可讀性和效率。
  所以,問題的關鍵在於如何將ASM程序M封裝成C代碼。簡單來說一句話,那就是善用Keil強大的編譯器功能。Keil C具有可以將C語言翻譯成彙編的功能。因此大家只要將那些關鍵代碼用C語言寫出函數框架(記得一定要在函數實現中調用所有的入口和出口參數,以及所需要用到的系統函數,如此方可清晰的看到Keil對參數和系統函數的調用規則),然後右鍵此C文件,按圖

点击看大图点击看大图

所示進行選擇。然後編譯此C文件。
  用Keil打開產生的.SRC文件,此即對應此.C文件生成的彙編文件,我們可以對此文件進行仔細的分析來了解其函數封裝規則。如此,即可實現 "魚和胸章得兼"。如果對此產生的文件有不明白的地方,我們可以打開Keil自帶的"C51 User's Guide",那裡會有更加詳細的說明。
  同理,對於IAR等其他編譯器,大家也可以試試其是否有同樣的ASM生成功能,如果有的話,嘿嘿,就一切都好辦了。哈哈。希望此文可以對大家在混合語言編程方面有所幫助。


!注意:如果您发现此文章出现影响您的阅读的状况,请从浏览器地址栏里复制本文的链接到留言本报告给站长解决!
  • 上一篇: emc子程序3字节除以2字节除法和2字节除以1字节
  • 下一篇: 为arm,51与优盘进行串口通信的东东

  • >> 联系我们请给我们留言·留言本
    本站所有提供的信息软件资料均来自网络,版权及著作权归原作者所有,如果无意中侵犯了您的相关权利或触及法律法规,请给我们留言, 我们将在24小时内删除。
      浙ICP备05071687号  电子技术精品网