日韩在线不卡免费视频一区,日韩欧美精品一区二区三区经典,日产精品码2码三码四码区,人妻无码一区二区三区免费,日本feerbbwdh少妇丰满

  • 回復(fù)
  • 收藏
  • 點贊
  • 分享
  • 發(fā)新帖

【人氣王+山東大學(xué)】TI DSP各種段的定義+wsdymg

學(xué)習(xí)TI DSP 一個離不開的文件就是CMD文件,cmd文件是編譯完成之后鏈接各個目標(biāo)文件時,用來指示各個數(shù)據(jù)、符號等是如何劃分到各個段,以及每個段所使用的存儲空間的。許多筒子對cmd文件有畏難情緒,不容易理解各個段的含義,特別是在程序編譯沒有問題,但是在鏈接生成可執(zhí)行的.out遇到錯誤時更容易手足無措,所以我們就來詳細(xì)解讀一下cmd文件的具體含義。在cmd文件中能看到各種段.text .cinit .const等,這和通常系統(tǒng)中僅有TEXT, DATA, BSS( 或者arm系統(tǒng)的code,data,zi段 ),heap, stack有很大的區(qū)別:

TI段的定義:

    已初始化的段:.text  .cinit  .const  .econst  ..pinit  .switch

    .text:  所有可以執(zhí)行的代碼和常量

    .cinit: 全局變量和靜態(tài)變量的C初始化記錄

    .const: 包含字符串常量和初始化的全局變量和靜態(tài)變量(由const)的初始化和說明

    .econst: 包含字符串常量和初始化的全局變量和靜態(tài)變量(far const)的初始化和說明

    .pinit:  全局構(gòu)造器(C++)程序列表

    .switch:  包含switch 聲明的列表

未初始化的段:.bss  .ebss  .stack  .sysmem  .esysmen(另一種理解:這些段就認(rèn)為存儲空間而已)

    .bss:  為全局變量和局部變量保留的空間,在程序上電時.cinit空間中的數(shù)據(jù)復(fù)制出來并存儲到.bss空間中

    .ebss:  為使用大寄存器模式時的全局變量和靜態(tài)變量預(yù)留的空間,在程序上電時,cinit空間中的數(shù)據(jù)復(fù)制出來并存儲在.ebss

    .stack:  為系統(tǒng)堆棧保留的空間,主要用于和函數(shù)傳遞變量或為巨變變量分配空間

    .sysmem:  為動態(tài)存儲分配保留的空間,如果有宏函數(shù),此空間被空函數(shù)占用,如果沒有的話,此空間保留為0

    .esysmen:  為動態(tài)存儲分配保留的空間,如果有far函數(shù),此空間被相應(yīng)的占用,如果沒有的話,此空間保留為0。

可以看到已初始化段相當(dāng)于通常系統(tǒng)的TEXT, DATA, BSS, 只不過ti將有些段進(jìn)行了進(jìn)一步的深化。而未初始化段中,堆對應(yīng)的sysmem(esysmem), 棧對應(yīng)stack。 bss和ebss在任何系統(tǒng)中都是必須的,但是可能其它系統(tǒng)把這些細(xì)節(jié)掩蓋了,比如arm直接讓__main操作了。TI也有相應(yīng)的系統(tǒng)函數(shù)完成上述的數(shù)據(jù)復(fù)制搬運工作(主要是一些有初始化值的常量,存儲的時候需要將這些值保存在flash中,運行的時候需要在ram中),這個函數(shù)就是cint00函數(shù)。

全部回復(fù)(4)
正序查看
倒序查看
2016-01-25 15:48
有沒有理解這個定義用到什么實物上的作品呢?
0
回復(fù)
2016-01-25 15:53
@電源網(wǎng)-璐璐
有沒有理解這個定義用到什么實物上的作品呢?
這個是C2000控制器的一段代碼分析,最近項目里用到了DSP
0
回復(fù)
2016-01-25 15:56
@有道詞典
這個是C2000控制器的一段代碼分析,最近項目里用到了DSP
原創(chuàng)?
0
回復(fù)
2016-01-25 16:10
0
回復(fù)
發(fā)