DSP C6000 keywords 關鍵字總結

extern:

extern可以置於變量或者函數前,以表示變量或者函數的定義在別的文件中,提示編譯器遇到此變量和函數時在其他模塊中尋找其定義。另外,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:文檔原文如下

When you use the interrupt keywordwith the definition of the function,

 the compiler generates register saves basedon the rules for interrupt

functions and the special return sequence for interrupts.

翻譯:當你使用interrupt關鍵字定義函數時,編譯器基於中斷函數的規則生成寄存器存檔,

而且特殊的會返回中斷序列(不一定準確)

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的變量是說這變量可能會被意想不到地改變,這樣,編譯器就不會去假設這個變量的值了。精確地說就是,優化器在用到這個變量時必須每次都小心地重新讀取這個變量的值,而不是使用 保存在寄存器裏的備份。

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章