在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>DSP>匯編語言與C語言整合至DSP的方法

匯編語言與C語言整合至DSP的方法

2017-10-29 | rar | 0.4 MB | 次下載 | 1積分

資料介紹

本文將討論如何將匯編語言程序代碼整合到C語言中,以最大化性能以及程序設(shè)計(jì)人員生產(chǎn)力,內(nèi)容涵蓋了編譯器慣例(convention)、內(nèi)嵌(inlining)、內(nèi)嵌函數(shù)(intrinsic)、緩存器連結(jié)(register binding)和除錯(cuò)策略。?
????? 隨著DSP處理器性能的提升以及編譯器最佳化技術(shù)的進(jìn)步,曾經(jīng)紅極一時(shí)、僅用匯編語言編寫DSP應(yīng)用程序的作法已逐漸被淘汰。今天,幾乎每個(gè)DSP應(yīng)用程序都使用C語言程序代碼和匯編程序碼混合的方式。對于一些性能需求極高的關(guān)鍵功能,DSP工程師會繼續(xù)使用高度最佳化的匯編程序碼;而一些次要的功能現(xiàn)在也使用C語言編寫,使程序代碼更容易維護(hù)和移植。對于C語言和匯編程序碼的結(jié)合,每位DSP工程師都需要掌握特殊的工具和方法。
?????? 眾所皆知,匯編語言編碼具有更高的性能優(yōu)勢,而用C語言編碼則較容易且速度也更快。為了解其中原因,以下我們進(jìn)一步比較匯編語言編碼與C語言編碼的優(yōu)缺點(diǎn):
匯編語言編碼的優(yōu)點(diǎn):?
????? ?匯編語言編碼可以充分利用處理器的獨(dú)特指令以及各種專門的硬件資源。而C語言程序代碼是通用型程序代碼,必須支持各種硬件平臺,因此很難支持特殊平臺程序代碼。?
????? ?匯編程序設(shè)計(jì)人員通常對應(yīng)用程序非常熟悉,可以作出編譯器無法作出的假設(shè)。?
????? ?匯編程序設(shè)計(jì)人員可以發(fā)揮人類的創(chuàng)造性;而再先進(jìn)的編譯器也只是一個(gè)自動化的程序。
匯編語言編碼的缺點(diǎn):
????? ?匯編程序設(shè)計(jì)人員必須解決耗時(shí)的機(jī)器級問題,如緩存器分配和指令排程。若使用C語言程序代碼,這些問題可以由編譯器解決。?
????? ?使用匯編語言編碼的程序設(shè)計(jì)人員必須了解DSP架構(gòu)及其指令集的專業(yè)知識;而C語言編碼只需要掌握相當(dāng)普及的C語言知識。?
????? ?若使用匯編語言,將應(yīng)用程序從一個(gè)平臺移植到另一個(gè)平臺非常困難也相當(dāng)耗時(shí);而C語言應(yīng)用程序的移植相對而言非常容易。
????? 圖1顯示了如何利用專用硬件機(jī)制來獲得高度最佳化的匯編程序碼。左邊的C語言編碼利用模塊算法設(shè)計(jì)出一個(gè)循環(huán)緩沖區(qū)P1;右邊高度最佳化的匯編程序碼中,等效的緩沖區(qū)是利用CEVA-TeakLite-III DSP核心的模塊運(yùn)算機(jī)制(Modulo Mechanism)設(shè)計(jì)產(chǎn)生的。只要緩沖區(qū)指標(biāo)(本例中的r0)有更新,模塊運(yùn)算機(jī)制便會自動執(zhí)行模塊運(yùn)算。這種運(yùn)算與指針更新在同一個(gè)周期發(fā)生,因此匯編程序碼比C語言程序代碼更加高效,可為模塊運(yùn)算產(chǎn)生獨(dú)立的指令。?
?匯編語言與C語言整合至DSP的方法
圖1:右邊的CEVA-TeakLite-III匯編程序碼可以建置成左邊的C語言程序代碼。?
為DSP應(yīng)用選擇C/匯編程序碼?
????? 混合使用的問題就在于該如何劃分C語言程序代碼和匯編程序碼的界限,而答案取決于剖析器提供的性能分析結(jié)果。然而在使用剖析器之前,DSP工程師需要為應(yīng)用程序定義清晰的對象,一些典型的對象包括循環(huán)數(shù)、程序代碼大小和數(shù)據(jù)大小。一旦這些對象確定后,所有應(yīng)用程序都應(yīng)該先以C語言編寫和制作,隨后使用剖析器來分析性能。?
????? 在一些極端情況下,如控制應(yīng)用,用C語言層級的編碼就足夠了;但大多數(shù)情況下,原始C語言層級應(yīng)用程序版本不會遵從一個(gè)或多個(gè)對象,這也意味著需要使用一些匯編程序碼來完成。在求助于匯編語言編碼之前,C語言編碼可提供許多方法來提高性能,但這些方法不屬于本文討論的范疇。假設(shè)所有C語言級的方法全用完了,并且準(zhǔn)備使用匯編語言編碼,這時(shí)強(qiáng)烈建議將原始C語言程序代碼保存起來。這樣不僅方便除錯(cuò),而且一旦條件許可(比如轉(zhuǎn)移到更強(qiáng)大的平臺)還可以回復(fù)原始的C語言。
????? 程序代碼中的匯編語言部份應(yīng)盡可能維持在最少,這樣便能分析從剖析器得到的性能結(jié)果,并定義應(yīng)用程序中的關(guān)鍵函數(shù)。關(guān)鍵函數(shù)會占用大部份執(zhí)行時(shí)間,必須用匯編語言重寫才能滿足性能對象。當(dāng)兩到三個(gè)最關(guān)鍵的函數(shù)重寫后,需要重新進(jìn)行性能測量,若應(yīng)用程序仍然不能滿足對象需求,那么必須使用匯編語言定義并重寫額外的關(guān)鍵函數(shù),這個(gè)過程需要不斷地重復(fù)直到滿足性能對象需求為止。
匯編語言設(shè)計(jì)師的編譯器考慮?
????? 在編寫會與C語言程序代碼結(jié)合的匯編程序碼時(shí),匯編程序設(shè)計(jì)人員必須了解編譯器的慣例和假設(shè)。其中有個(gè)重要的編譯器慣例是函數(shù)呼叫慣例,也稱為函數(shù)參數(shù)傳遞慣例。這個(gè)慣例描述了編譯器如何在一個(gè)函數(shù)呼叫另一個(gè)函數(shù)時(shí)傳遞參數(shù)。為了使匯編語言函數(shù)能被C語言函數(shù)成功呼叫;反之亦然;匯編語言函數(shù)必須截取參數(shù),然后將參數(shù)發(fā)送到由函數(shù)呼叫慣例定義的硬件資源上,通常為緩存器或堆棧內(nèi)存。
????? 匯編程序設(shè)計(jì)人員還必須了解編譯器的緩存器使用慣例。這些慣例將硬件緩存器分成被呼叫者保存(callee-saved;或呼叫者使用,caller-used);以及被呼叫者使用(callee-used;或呼叫者保存,caller-saved)緩存器。編譯器假設(shè)被呼叫者保存緩存器在函數(shù)呼叫過程中保持不變的值,若匯編程序設(shè)計(jì)人員希望使用這種緩存器,他們必須先將緩存器的值備份,然后在返回到C語言程序代碼之前恢復(fù)這些緩存器的內(nèi)容;相反的,被呼叫者使用緩存器被認(rèn)為在函式呼叫過程中不會保持一定的值。這意味著匯編程序設(shè)計(jì)人員使用這些緩存器之前無需進(jìn)行備份,不過他們必須記住,當(dāng)匯編語言函數(shù)呼叫C語言函數(shù)時(shí),被呼叫者可以對這些緩存器進(jìn)行覆寫。?
??
下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1DC電源插座圖紙
  2. 0.67 MB   |  2次下載  |  免費(fèi)
  3. 2AN158 GD32VW553 Wi-Fi開發(fā)指南
  4. 1.51MB   |  2次下載  |  免費(fèi)
  5. 3AN148 GD32VW553射頻硬件開發(fā)指南
  6. 2.07MB   |  1次下載  |  免費(fèi)
  7. 4AN111-LTC3219用戶指南
  8. 84.32KB   |  次下載  |  免費(fèi)
  9. 5AN153-用于電源系統(tǒng)管理的Linduino
  10. 1.38MB   |  次下載  |  免費(fèi)
  11. 6AN-283: Σ-Δ型ADC和DAC[中文版]
  12. 677.86KB   |  次下載  |  免費(fèi)
  13. 7SM2018E 支持可控硅調(diào)光線性恒流控制芯片
  14. 402.24 KB  |  次下載  |  免費(fèi)
  15. 8AN-1308: 電流檢測放大器共模階躍響應(yīng)
  16. 545.42KB   |  次下載  |  免費(fèi)

本月

  1. 1ADI高性能電源管理解決方案
  2. 2.43 MB   |  450次下載  |  免費(fèi)
  3. 2免費(fèi)開源CC3D飛控資料(電路圖&PCB源文件、BOM、
  4. 5.67 MB   |  138次下載  |  1 積分
  5. 3基于STM32單片機(jī)智能手環(huán)心率計(jì)步器體溫顯示設(shè)計(jì)
  6. 0.10 MB   |  130次下載  |  免費(fèi)
  7. 4使用單片機(jī)實(shí)現(xiàn)七人表決器的程序和仿真資料免費(fèi)下載
  8. 2.96 MB   |  44次下載  |  免費(fèi)
  9. 53314A函數(shù)發(fā)生器維修手冊
  10. 16.30 MB   |  31次下載  |  免費(fèi)
  11. 6美的電磁爐維修手冊大全
  12. 1.56 MB   |  24次下載  |  5 積分
  13. 7如何正確測試電源的紋波
  14. 0.36 MB   |  17次下載  |  免費(fèi)
  15. 8感應(yīng)筆電路圖
  16. 0.06 MB   |  10次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935121次下載  |  10 積分
  3. 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
  4. 1.48MB  |  420062次下載  |  10 積分
  5. 3Altium DXP2002下載入口
  6. 未知  |  233088次下載  |  10 積分
  7. 4電路仿真軟件multisim 10.0免費(fèi)下載
  8. 340992  |  191367次下載  |  10 積分
  9. 5十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
  10. 158M  |  183335次下載  |  10 積分
  11. 6labview8.5下載
  12. 未知  |  81581次下載  |  10 積分
  13. 7Keil工具M(jìn)DK-Arm免費(fèi)下載
  14. 0.02 MB  |  73810次下載  |  10 積分
  15. 8LabVIEW 8.6下載
  16. 未知  |  65988次下載  |  10 積分
主站蜘蛛池模板: 视频亚洲一区 | 一级毛片aaa片免费观看 | 国产精品午夜免费观看网站 | 毛片.com| 久久精品夜夜夜夜夜久久 | 日本免费人成黄页网观看视频 | 亚洲欧美人成网站综合在线 | 黄色免费网站在线播放 | brazzers720欧美丰满 | 成人区精品一区二区毛片不卡 | 国产精品黄网站免费观看 | 狼色在线视频 | 生活片黄色 | 精品伊人久久大线蕉地址 | 成人黄色免费观看 | 免费看逼网站 | 1024你懂的国产日韩欧美 | 免费观看视频高清www | 亚洲性后网| 俄罗斯毛片基地 | 日本午夜视频 | 美女视频网站免费播放视 | 一级一级特黄女人精品毛片 | 视色4se视频在线观看 | 免费欧美黄色 | caoporn成人免费公开 | 国产理论精品 | 亚洲乱亚洲乱妇41p国产成人 | 女人18毛片水多 | 欧美大狠狠大臿蕉香蕉大视频 | 欧美人与动欧交视频 | 久久九色 | www一区二区三区 | 两性午夜欧美高清做性 | 久青草国产手机在线视频 | 亚洲丁香网 | 噜噜噜噜噜久久久久久91 | 在线观看免费视频网站色 | 亚洲成人自拍 | 九色亚洲| 天天做人人爱夜夜爽2020 |