《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 業(yè)界動(dòng)態(tài) > DSP編程技巧之:運(yùn)行時(shí)模型以及鉤子函數(shù)與庫函數(shù)

DSP編程技巧之:運(yùn)行時(shí)模型以及鉤子函數(shù)與庫函數(shù)

2015-09-18
關(guān)鍵詞: DSP 編程技巧 庫函數(shù)

  在前面幾期中,我們了解到DSP編程技巧之:編譯流程與處理器選項(xiàng)、程序優(yōu)化、調(diào)試與路徑選項(xiàng)、控制與語言選項(xiàng)以及預(yù)處理與診斷,今天為大家講解運(yùn)行時(shí)模型以及鉤子函數(shù)與庫函數(shù)。
  當(dāng)我們?cè)赑C運(yùn)行一些C/C++編寫程序的時(shí)候,如果缺少必要的庫文件或者說一些dll文件之類的,程序會(huì)崩潰并在各種崩潰聲音的提示下彈出一堆對(duì)話框,提示我們“run-time error”,缺少xxxx運(yùn)行庫文件等等。那運(yùn)行庫文件是做什么的呢?它里面主要包含了C/C++的庫函數(shù),編譯器內(nèi)建的一些功能函數(shù)、浮點(diǎn)數(shù)的算數(shù)運(yùn)算函數(shù),以及編譯器所支持的C語言中一些與I/O操作有關(guān)的函數(shù)等。在DSP中運(yùn)行里面運(yùn)行我們的程序時(shí),同樣需要相關(guān)的實(shí)時(shí)運(yùn)行庫文件的支持;所以我們要配置一些相關(guān)的運(yùn)行庫選項(xiàng),使得編譯器知道我們希望使用什么樣的方法來使用實(shí)時(shí)運(yùn)行庫,這就是運(yùn)行時(shí)模型(run-time error),它主要定義了代碼在特定選項(xiàng)之下的運(yùn)行方式,這些選項(xiàng)如表1所示。
  鉤子函數(shù)(hook function)是在進(jìn)入程序中的函數(shù)或者退出函數(shù)時(shí)調(diào)用的程序。它們的用途包括:調(diào)試(debug)、跟蹤(trace)、評(píng)估(profile)以及堆棧溢出的檢測(cè)等。我們可以通過表1中的選項(xiàng)對(duì)鉤子函數(shù)的使用進(jìn)行控制。
  DSP編程技巧之:運(yùn)行時(shí)模型以及鉤子函數(shù)與庫函數(shù)

  關(guān)于鉤子函數(shù),在CCS的編譯器里還有以下的幾個(gè)規(guī)則可以補(bǔ)充說明一下:
  1. 使能鉤子函數(shù)選項(xiàng)的話,會(huì)默認(rèn)使用表1中的定義方法創(chuàng)建鉤子函數(shù)的隱式聲明。此時(shí)如果我們要聲明或者定義鉤子函數(shù)的功能的話,必須與這個(gè)隱式聲明使用相同的定義方式。
  2. 在C++編程的時(shí)候,鉤子函數(shù)被聲明為外部的C函數(shù),這時(shí)候我們可以使用C語言或者匯編語言來編寫鉤子函數(shù)的程序,因?yàn)槭褂玫氖莈xtern C的調(diào)用方法,所以我們不用擔(dān)心會(huì)違反C++的函數(shù)名字改編(name mangling)規(guī)則而產(chǎn)生編譯錯(cuò)誤。
  3. 鉤子函數(shù)可以被聲明為inline內(nèi)聯(lián)類型的,此時(shí)編譯器把它們與其它的內(nèi)聯(lián)函數(shù)按照相同的規(guī)則進(jìn)行處理,例如函數(shù)優(yōu)化等選項(xiàng)對(duì)它們起相同的作用。
  4. 入口鉤子函數(shù)和出口鉤子函數(shù)是互相獨(dú)立的,我們可以只使用它們中的一個(gè),或者同時(shí)使用它們。
  5. 我們要避免對(duì)鉤子函數(shù)的遞歸調(diào)用,也就是說在鉤子函數(shù)中不要調(diào)用其它包含了對(duì)鉤子函數(shù)本身進(jìn)行調(diào)用的函數(shù)(有點(diǎn)小拗口)。為了防止這種潛在bug的發(fā)生,編譯器對(duì)鉤子函數(shù)的產(chǎn)生有一些限制,例如對(duì)于內(nèi)聯(lián)類型的函數(shù)或者鉤子函數(shù)本身,我們都無法為它們產(chǎn)生一個(gè)鉤子函數(shù)。
  那如果在優(yōu)化選項(xiàng)的作用下,編譯器把某些函數(shù)自動(dòng)優(yōu)化為內(nèi)聯(lián)函數(shù)的話,我們已經(jīng)為它們產(chǎn)生的鉤子函數(shù)會(huì)不會(huì)導(dǎo)致錯(cuò)誤呢?此時(shí)我們要使用--remove_hooks_when_inlining選項(xiàng)把編譯器自動(dòng)內(nèi)聯(lián)的函數(shù)的入口/鉤子出口函數(shù)給優(yōu)化掉。
  6. 如果我們不希望產(chǎn)生鉤子函數(shù)的話,在編程時(shí)可以直接使用與處理指令阻止產(chǎn)生鉤子函數(shù)。在C語言編程時(shí),使用方法為#pragma NO_HOOKS ( func );
  在C++編程時(shí),使用方法#pragma NO_HOOKS;(話說C++的語法經(jīng)常比C的要簡(jiǎn)短一些)。
  鉤子函數(shù)相關(guān)的控制選項(xiàng)并不多,不過其使用時(shí)的條條框框卻真不少。下面我們換個(gè)輕松點(diǎn)的看看,比如庫函數(shù)選項(xiàng)。庫函數(shù)一般是指編譯器提供的可在C/C++源程序中調(diào)用的函數(shù)??煞譃閮深?,一類是C語言標(biāo)準(zhǔn)規(guī)定的庫函數(shù),一類是編譯器特定的庫函數(shù)。庫中存放函數(shù)的名稱和對(duì)應(yīng)的目標(biāo)代碼,以及連接過程中所需的重定位信息,一般情況下廠家不會(huì)向我們開放庫函數(shù)的內(nèi)容。當(dāng)然,在CCS編程中,如果我們我們需要分享某個(gè)功能給別人,但是又不想讓他們知道函數(shù)的內(nèi)容,也可以把我們的函數(shù)甚至程序封裝為一個(gè)庫函數(shù)(CCS一般情況下我們用它產(chǎn)生.out二進(jìn)制文件,此外還可以產(chǎn)生.lib庫文件)就行了。
  庫函數(shù)大家都不陌生,比如在C2000 DSP的編程中,為了使用定點(diǎn)數(shù)學(xué)庫的相關(guān)函數(shù),我們要把IQmath.lib加入到工程里;為了使用FPU相關(guān)的浮點(diǎn)函數(shù)庫,我們需要調(diào)用C28x_FPU_Lib_Beta1.lib等。在CCS編譯環(huán)境下,庫函數(shù)的相關(guān)選項(xiàng)并不多,也不復(fù)雜,如表2、表3所示。
  DSP編程技巧之:運(yùn)行時(shí)模型以及鉤子函數(shù)與庫函數(shù)
  在使用編譯器的--opt_level=3優(yōu)化級(jí)別(即-O3,文件級(jí)別的優(yōu)化)的情況下,編譯器會(huì)對(duì)已知的庫函數(shù)利用已有的優(yōu)化規(guī)則直接輸出優(yōu)化結(jié)果。但是如果我們對(duì)標(biāo)準(zhǔn)的庫函數(shù)進(jìn)行重定義,即標(biāo)準(zhǔn)庫函數(shù)的定義發(fā)生了改變的話,則對(duì)它的優(yōu)化將失效。
  DSP編程技巧之:運(yùn)行時(shí)模型以及鉤子函數(shù)與庫函數(shù)

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請(qǐng)及時(shí)通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲激情中文1区| 亚洲影音先锋| 亚洲午夜精品久久| 99精品视频免费全部在线| 最新国产精品拍自在线播放| 精品电影在线观看| 精品9999| 在线免费观看视频一区| 在线精品视频一区二区| 国产伊人精品| 国产婷婷97碰碰久久人人蜜臀| 国产美女搞久久| 国产欧美日韩一区| 国产视频观看一区| 国产一级一区二区| 狠狠色丁香婷婷综合影院| 黄色成人在线免费| 一区免费观看| 亚洲激情一区二区| 日韩午夜黄色| 亚洲一二三区精品| 亚洲欧美日韩精品久久| 欧美一区二区视频97| 亚洲成人资源| 日韩网站在线观看| 亚洲视频999| 欧美一二三视频| 久久免费黄色| 欧美激情女人20p| 欧美日韩欧美一区二区| 国产精品视频| 国内精品久久久久久| 亚洲二区在线视频| 99国产精品久久久久老师| 亚洲一区中文| 亚洲国产99| 日韩视频欧美视频| 亚洲欧美成人一区二区三区| 久久精品国产精品亚洲| 欧美成人69av| 国产精品白丝jk黑袜喷水| 国产一区二区无遮挡| 亚洲国产日韩在线| 亚洲网友自拍| 亚洲电影网站| 亚洲一区二区精品在线| 久久久久久久尹人综合网亚洲| 欧美va亚洲va国产综合| 欧美天堂在线观看| 国产一区二区三区黄| 亚洲国产婷婷香蕉久久久久久99 | 最新日韩中文字幕| 亚洲一区bb| 麻豆精品视频在线| 国产精品久久久一区麻豆最新章节 | 鲁大师成人一区二区三区| 欧美日韩xxxxx| 国产亚洲欧美日韩在线一区| 最新中文字幕一区二区三区| 亚洲欧美在线一区| 99精品国产高清一区二区| 欧美在线|欧美| 欧美日韩精品一区二区天天拍小说 | 又紧又大又爽精品一区二区| 亚洲视频在线观看视频| 亚洲国产一二三| 欧美一级网站| 欧美日韩一区二区免费在线观看| 韩国亚洲精品| 亚洲淫片在线视频| 亚洲精品中文在线| 久久美女性网| 国产美女一区二区| 99国产精品久久久| 亚洲人成绝费网站色www| 欧美在线观看网站| 欧美午夜三级| 亚洲国产精品尤物yw在线观看| 亚洲欧美欧美一区二区三区| 一区二区三区www| 免费亚洲婷婷| 国产一区欧美| 亚洲欧美日韩国产一区二区三区 | 亚洲大片一区二区三区| 欧美一区二区高清在线观看| 亚洲自拍偷拍麻豆| 欧美精品自拍偷拍动漫精品| 影音先锋中文字幕一区二区| 性做久久久久久| 亚洲欧美日韩网| 欧美日韩国产影片| 亚洲精品1区2区| 亚洲国内精品| 久久久久一区二区| 国产日韩综合一区二区性色av| 亚洲天堂av高清| 亚洲一级片在线观看| 欧美另类69精品久久久久9999| 亚洲第一中文字幕| 亚洲第一精品福利| 久久久久久久久久久久久9999| 国产精品系列在线| 亚洲一区二区免费视频| 亚洲欧美日韩精品综合在线观看 | 国产视频精品xxxx| 亚洲欧美日韩精品一区二区| 亚洲欧美日韩成人高清在线一区| 欧美少妇一区二区| 99精品久久久| 亚洲一级片在线看| 国产精品久久久久久福利一牛影视| 艳妇臀荡乳欲伦亚洲一区| 一区二区高清| 欧美视频在线观看 亚洲欧| 亚洲精品之草原avav久久| av成人免费在线观看| 欧美日本精品| 夜夜嗨av一区二区三区四区| 一区二区三区久久久| 欧美日韩第一区| 99re成人精品视频| 亚洲一区二区三区涩| 国产精品v亚洲精品v日韩精品| 一区二区免费在线观看| 午夜精品电影| 国产午夜精品一区二区三区视频 | 91久久精品国产| 欧美福利视频网站| 亚洲人妖在线| 亚洲一区二区在线视频| 国产精品网站视频| 欧美亚洲色图校园春色| 久久婷婷激情| 亚洲国产欧美不卡在线观看| 99国产精品视频免费观看| 欧美日韩亚洲系列| 亚洲午夜精品久久久久久浪潮| 欧美一级片久久久久久久| 国产在线高清精品| 亚洲日韩视频| 欧美性猛交视频| 性欧美xxxx大乳国产app| 老司机67194精品线观看| 亚洲精品少妇| 亚洲女同同性videoxma| 国产一区二区看久久| 亚洲欧洲日本国产| 欧美色中文字幕| 欧美亚洲一区三区| 欧美国产日韩视频| 一区二区三区欧美在线观看| 欧美亚洲免费电影| 狠久久av成人天堂| 在线亚洲自拍| 国产午夜精品一区理论片飘花| 亚洲国产日韩精品| 国产精品第一页第二页第三页| 欧美在线www| 欧美日韩精品是欧美日韩精品| 亚洲欧美日韩国产一区二区| 美日韩精品免费观看视频| 日韩一区二区精品视频| 久久久精彩视频| 亚洲乱码日产精品bd| 久久狠狠久久综合桃花| 亚洲精品国产精品乱码不99 | 精品动漫一区| 亚洲一卡久久| 一区二区三区在线视频观看| 一本色道久久综合亚洲精品小说 | 欧美在线亚洲在线| 欧美人在线观看| 香蕉乱码成人久久天堂爱免费| 欧美91大片| 亚洲欧美激情一区| 欧美精品乱人伦久久久久久 | 欧美亚洲三级| 亚洲欧洲一二三| 久久精品一二三区| 日韩亚洲欧美精品| 久久综合网hezyo| 亚洲自拍偷拍福利| 欧美伦理91| 亚洲观看高清完整版在线观看| 国产精品久久77777| 亚洲欧洲精品一区二区精品久久久| 国产女主播一区二区三区| 妖精成人www高清在线观看| 狠狠色2019综合网| 欧美亚洲一区在线| 一本大道久久精品懂色aⅴ | 欧美三级小说| 亚洲激情视频在线| 国产日韩一区在线| 亚洲视频一二三| 亚洲人体偷拍| 欧美aⅴ99久久黑人专区| 午夜在线观看免费一区| 欧美丝袜一区二区| 亚洲毛片在线|