DSP C6000 keywords 關鍵字總結

externextern可以置於變量或者函數前,以表示變量或者函數的定義在別的文件中,提示編譯器遇到此變量和函數時在其他模塊中尋找其定義。另外,extern也可用來進行鏈接指定。

 

const: 可以用const定義一些變量或數組,以確保它的值不被改變。

例:int *const p = &x;  定義一個常量指針p給變量int。

      const int *q = &x;  定義一個變量指針q給常量int。

 

cregister:定義用來直接訪問CPU控制寄存器的變量。

你可以先定義一個頭文件,專門定義這個變量(實際就是相應的寄存器),
然後在相應的c源代碼中直接引用這些變量了。
定義這些變量的方式是:
extern cregister volatile unsigned int register;
其中register就是AMR,CSR,IFR等寄存器。
例如:

extern cregister volatile unsigned int AMR;
extern cregister volatile unsigned int CSR;
extern cregister volatile unsigned int IFR;
extern cregister volatile unsigned int ISR;
extern cregister volatile unsigned int ICR;
extern cregister volatile unsigned int IER;
extern cregister volatile unsigned int FADCR;
extern cregister volatile unsigned int FAUCR;
extern cregister volatile unsigned int FMCR;
main()
{
printf(”AMR = %x/n”, AMR);
}

interrupt:interrupt關鍵字用來定義一箇中斷服務函數,中斷服務函數必須保存中斷控制寄存器和返回序列。當C/C++語言程序被中斷時,中斷服務程序將保存所有用到的寄存器。

interrupt void int_handler()
{
unsigned int flags;
...
}

Near and Far :用來定義函數調用的方式以及函數調用時全局變量和靜態變量的訪問。

全局和靜態變量可以聲明爲near或far,near和far爲類型修飾符。

聲明爲near的變量採用了寄存器相對尋址,基址寄存器爲數據指針DP(32Bits),偏移

地址爲15位常量,所以,near型全局和靜態變量不能超過32Bytes;

聲明爲far的變量採用寄存器間接尋址,可以對任何空間進行尋址,無大小限制;

Near型變量在訪問時比far型變量少執行兩條語句。

 

restrict

restrict關鍵字用來修飾指針、引用和數組變量,表示在變量的有效範圍內,指針所指的對象

只通過此指針來引用。

 

 volatile:

易變(C:與const一樣,volatile是一個類型修飾符(type specifier)。它是被設計用來修飾被不同線程訪問和修改的變量。)
推薦一個定義爲volatile的變量是說這變量可能會被意想不到地改變,這樣,編譯器就不會去假設這個變量的值了。精確地說就是,優化器在用到這個變量時必須每次都小心地重新讀取這個變量的值,而不是使用 保存在寄存器裏的備份。

發佈了63 篇原創文章 · 獲贊 23 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章