国产美女一级a作爱在线观看_一级毛片免费视频图_三上悠亚在线精品一二区_在线无码精品秘 视频网站_日本欧美成人免费_国产精品自拍第三页_性色无码激情免费视频_午夜成人福利剧无码天天爽_精品国产福利尤物_不卡不卡免费视频

單片機(jī)開(kāi)發(fā):為何要避免使用匯編語(yǔ)言?

單片機(jī)開(kāi)發(fā):為何要避免使用匯編語(yǔ)言?
瀏覽量:1198 上傳更新:2021-02-25
單片機(jī)開(kāi)發(fā):為何要避免使用匯編語(yǔ)言?

對(duì)資深單片機(jī)開(kāi)發(fā)人員來(lái)說(shuō)經(jīng)常提倡的一個(gè)開(kāi)發(fā)技巧是,開(kāi)發(fā)人員應(yīng)避免使用匯編語(yǔ)言。避免使用匯編語(yǔ)言的原因是它特定于所使用的處理器體系結(jié)構(gòu),難以閱讀,理解和維護(hù)。而且需要注意的是,在查看仍可以使用匯編語(yǔ)言的每個(gè)區(qū)域之前,這些匯編指令如何集成到代碼庫(kù)中將根據(jù)所使用的開(kāi)發(fā)環(huán)境而有所不同。通常有一些自定義的編譯器函數(shù)用于使編譯器語(yǔ)言知道正在使用匯編指令,例如_asm(),我們檢查的代碼段在使用前可能需要進(jìn)行修改。

對(duì)資深單片機(jī)開(kāi)發(fā)人員來(lái)說(shuō)經(jīng)常提倡的一個(gè)開(kāi)發(fā)技巧是,開(kāi)發(fā)人員應(yīng)避免使用匯編語(yǔ)言。避免使用匯編語(yǔ)言的原因是它特定于所使用的處理器體系結(jié)構(gòu),難以閱讀,理解和維護(hù)。而且需要注意的是,在查看仍可以使用匯編語(yǔ)言的每個(gè)區(qū)域之前,這些匯編指令如何集成到代碼庫(kù)中將根據(jù)所使用的開(kāi)發(fā)環(huán)境而有所不同。通常有一些自定義的編譯器函數(shù)用于使編譯器語(yǔ)言知道正在使用匯編指令,例如_asm(),我們檢查的代碼段在使用前可能需要進(jìn)行修改。

但是,有四個(gè)適合使用匯編語(yǔ)言的地方:

一、執(zhí)行斷點(diǎn)指令

每當(dāng)我開(kāi)始一個(gè)新項(xiàng)目時(shí),我在實(shí)施過(guò)程中要做的第一件事就是將斷點(diǎn)的匯編指令放入CPU錯(cuò)誤,看門(mén)狗超時(shí)以及特殊RTOS事件(例如在中斷服務(wù)例程中使用malloc)。這樣做的原因是,當(dāng)達(dá)到這些功能之一時(shí),想得到通知,但是又不想管理這些斷點(diǎn)。許多現(xiàn)代處理器都有一個(gè)斷點(diǎn)匯編指令,使用匯編代碼執(zhí)行該指令是完全合適的。

對(duì)于使用類(lèi)似于STM32 CubeIDE的IDE的Arm Cortex-M處理器,此類(lèi)組裝實(shí)現(xiàn)可能如下所示:

__asm(“ bkpt”);

當(dāng)?shù)竭_(dá)上面這條指令時(shí),處理器將停止執(zhí)行。

二、從Bootloader過(guò)渡到應(yīng)用程序

開(kāi)發(fā)人員應(yīng)該使用匯編語(yǔ)言的第二個(gè)領(lǐng)域是從引導(dǎo)加載程序到應(yīng)用程序代碼的過(guò)渡點(diǎn)。在許多系統(tǒng)中,引導(dǎo)加載程序是第一個(gè)執(zhí)行的應(yīng)用程序。它設(shè)置處理器,驗(yàn)證內(nèi)存并可能執(zhí)行其他一些功能。但是在某個(gè)時(shí)候,引導(dǎo)加載程序讓步并跳轉(zhuǎn)到主應(yīng)用程序。為了成功完成該跳轉(zhuǎn),需要將處理器中的許多組件設(shè)置為它們的初始狀態(tài),例如系統(tǒng)堆棧,然后需要加載應(yīng)用程序復(fù)位向量的功能指針。另外,當(dāng)需要將匯編語(yǔ)言集成到應(yīng)用程序中時(shí),可以使用IDE的匯編函數(shù)。這些功能可能因IDE的不同而有所差異。

三、控制循環(huán)中的代碼優(yōu)化

在某些情況下,可能需要在高頻控制循環(huán)中優(yōu)化代碼,這需要使用匯編語(yǔ)言。手工編碼組裝中的快速控制循環(huán)曾經(jīng)很普遍。盡管有時(shí)這仍然是適當(dāng)?shù)模诋?dāng)今使用超快處理器和使用復(fù)雜的優(yōu)化技術(shù)的編譯器的開(kāi)發(fā)環(huán)境中,你會(huì)發(fā)現(xiàn)使用匯編語(yǔ)言的情況將越來(lái)越少。

四、學(xué)習(xí)單片機(jī)基礎(chǔ)知識(shí)

許多人剛開(kāi)始涉足單片機(jī)開(kāi)發(fā)時(shí),實(shí)際上是被迫以匯編形式開(kāi)發(fā)應(yīng)用程序的。當(dāng)時(shí)的單片機(jī)供應(yīng)商不提供免費(fèi)的C編譯器,但是匯編語(yǔ)言工具是免費(fèi)的。

我不認(rèn)為應(yīng)該花很多時(shí)間在匯編上,但是我認(rèn)為單片機(jī)的開(kāi)發(fā)人員應(yīng)該會(huì)編寫(xiě)一些非?;镜膽?yīng)用程序,例如“ Hello World”應(yīng)用程序和閃爍LED應(yīng)用程序,以了解如何初始化處理器、控制寄存器,并稍微了解基礎(chǔ)指令集。這些可以幫助開(kāi)發(fā)人員理解C/C++的底層體系結(jié)構(gòu),并且真正理解該體系結(jié)構(gòu)的唯一方法就是以其自身的自然語(yǔ)言進(jìn)行處理,從而可以用C/C++編寫(xiě)效率更高的代碼。


聯(lián)系我們

深圳市品茂電子科技有限公司

網(wǎng)址:www.lovender.cn

聯(lián)系人:王建平

手機(jī):13728693626

座機(jī):0755-83553626

傳真:0755-83553131

郵箱:sky_wangjianping@163.com

地址:深圳市龍崗區(qū)南灣街道丹竹頭社區(qū)康正路48號(hào)4號(hào)樓401