對暫存器的理解

2021-09-28 19:00:55 字數 1139 閱讀 2363

在進行嵌入式開發過程中,暫存器可以說是與嵌入式工程師打交道最多的東西,因為偏向底層的驅動開發,幾乎都是利用暫存器完成的。那麼,暫存器到底是什麼呢?下面為自己的一些理解,如有錯誤之處,還望海涵與糾正,謝謝!

在正式進入暫存器的知識之前,首先對記憶體對映進行簡單的介紹。此處以ti公司的dsp28335晶元為例。通過查詢該晶元的官方資料手冊,可獲知該晶元的記憶體分配圖。由於該圖比較大,即使貼出來也會很模糊,所以此處僅展示一部分截圖,如下:

由上圖可知,由於該晶元是32位,所以整個晶元支援的最大定址範圍為4gb,只是晶元廠商沒有完全使用罷了。而整個晶元的記憶體空間又被分為很多,用於不同的功能。

在簡單了解了記憶體對映之後,我們開始進行暫存器的講解。

實際上,我們在操作晶元的暫存器時,其實操作的是暫存器對應的位址雖然直接操作位址的方式,會使得**的執行效率稍微高一點,但是可讀性和可維護性便會大大降低,這樣的代價對於絕大部分應用而言是不可以接受的。如果對於關鍵**而言,需要確保它的執行效率,那麼可以小範圍的使用操作位址的方式進行。

那我們為什麼在實際程式設計時,並沒有對相應的位址與暫存器之間建立聯絡呢?其實,是ti官方的檔案已經幫我們完成了這個工作。其中,dsp2833x_headers_nonbios.cmd檔案為各個暫存器分配了位址,dsp2833x_gpio.h檔案為暫存器建立相應的結構體,而dsp2833x_globalvariabledefs.c檔案則可以人為暫存器名稱位址之間的橋梁,該檔案的內容是為了定義上述cmd檔案中的暫存器名稱。

通過上面的敘述,我們可以知道,暫存器實際上就是代表了乙個對應的位址,說的再專業一點,這個過程就叫暫存器對映

對暫存器的認識

三 對暫存器的認識 暫存器 register 相當於調色皿,資料相當於色料。把色料放進調色皿裡,為的是要得到預定的效果,暫存器對於資料亦然。調色皿有大有小,深度有深有淺,其目的是針對不同的情況,以作有效的處理。暫存器也是一樣,應用得好,程式會很精簡,容易修改 閱讀。否則,想到哪乙個就用哪乙個,沒有原...

對暫存器的操作

接觸了一陣子的stm32函式庫,使用起來挺方便的,但是很少有處理器會有函式庫,大部分情況下還是要自己來對暫存器進行操作,所以還是不要生疏了對暫存器的操作。對暫存器的操作有時候要考慮對其不同的位進行先後順序不同的設定,因為這樣可能達不到預期的效果,這個不太好總結,但是對暫存器操作的方法是固定的。在這之...

暫存器(通用暫存器)

因為學習使用的是王爽的 組合語言 第3版 因此也只能提到8086cpo的暫存器。對於其他而言,原理都是相通的。對於8086暫存器,有14個暫存器,主要是 ax bx cx dx si di sp bp ip cs ss ds es psw。一 通用暫存器 8086的通用暫存器有ax bx cx dx...