儲存型別與儲存區關係

2021-04-13 14:11:41 字數 589 閱讀 4081

data    --->   可定址片內ram

data:固定指前面0x00-0x7f的128個ram,可以用acc直接讀寫的,速度最快,生成的**也最小。

bdata   --->   可位定址的片內ram

idata   --->   可定址片內ram,允許訪問全部內部ram ( mox acc,@rx.)

idata:固定指前面0x00-0xff的256個ram,其中前128和data的128完全相同,只是因為訪問的方式不同。idata是用類似c中的指標方式 訪問的。

pdata   --->   分頁定址片外ram (movx @r0) (256 byte/頁)

pdata:外部擴充套件ram的低256個位元組,位址出現在a0-a7的上時讀寫,用movx acc,@rx讀寫。這個比較特殊,而且c51好象有對此bug, 建議少用。但也有他的優點,具體用法屬於中級問題,這裡不提。

xdata   --->   可定址片外ram (64k 位址範圍)

xdata:外部擴充套件ram,一般指外部0x0000-0xffff空間,用dptr訪問。

code    --->   程式儲存區 (64k 位址範圍),對應movc @dptr

記憶體儲存 全域性 靜態儲存區 常量儲存區

全域性 靜態儲存區 全域性變數和靜態變數被分配到同一塊記憶體中 常量儲存區 存放的是常量,是不允許修改的。靜態儲存是main函式執行前分配記憶體並初始化 常量儲存是固化在執行檔案上的資料。棧的方向和平台有關,一般來說,windows由高位址向低位址增長,linux相反,但基於linux的第三方系統得...

堆 棧 自由儲存區 全域性 靜態儲存區和常量儲存區

在c 中,記憶體分成5個區,他們分別是堆 棧 自由儲存區 全域性 靜態儲存區和常量儲存區 1.棧由編譯器在需要的時候分配,在不需要的時候自動清楚的變數的儲存區。裡面的變數通常是區域性變數 函式引數等。棧空間初始化的時候,空間大小就確定了,棧指標指向棧頂 高位址 壓入棧時 棧指標減減,想低位址移動。棧...

堆 棧 自由儲存區 全域性 靜態儲存區和常量儲存區

堆 棧 自由儲存區 全域性 靜態儲存區和常量儲存區 在c 中,記憶體分成5個區,他們分別是堆 棧 自由儲存區 全域性 靜態儲存區和常量儲存區。棧,就是那些由編譯器在需要的時候分配,在不需要的時候自動清楚的變數的儲存區。裡面的變數通常是區域性變數 函式引數等。堆,就是那些由new分配的記憶體塊,他們的...