新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > COFF文件分析提取器的實現及其應用

        COFF文件分析提取器的實現及其應用

        作者: 時間:2009-04-24 來源:網絡 收藏

        頭中的標記包含了諸如大小端模式、是否為可執行等信息,具體解釋見參考文獻。
        (2)可選頭:可選頭接在頭的后面,也就是從文件的Ox0014偏移處開始。長度可以為O。不同平臺的可選頭,長度和結構都不相同,TI DSP采用的可選頭長度為28 B,用C的結構描述如下:

        本文引用地址:http://www.104case.com/article/152521.htm


        (3)段頭:段頭緊跟在可選文件頭的后面(如果可選文件頭的長度為0,它緊跟在文件頭后),一般包含多個段頭,數目就是文件頭中的usSection―Counter。它的長度為48 B,用C的結構描述如下:


        段頭可以說是最重要的頭,文件器的核心就是用它來描述它的。一個COFF文件可以不要其它的節,但文件頭和段頭這兩節是必不可少的。有必要詳述一下它的成員:
        cName用來保存段名,常用的段名有.text,.da―ta,.bss等。對于用戶自定義長度超過8 B的段名,則為指向符號表的指針。
        uiVirtAddr是段數據載入或連接時的虛擬地址。對于可執行文件,這個地址是相對于它的地址空間而言。當可執行文件被載入內存時,這個地址就是段中數據的第一個字節的位置。大多數情況下與uiPhyAddr相同。
        uiSecSize是段中數據的實際長度,在讀取段數據時就由它來確定要讀多少字節。
        uiSecPointer是段數據在COFF文件中的偏移量,以絕對地址標識。
        uiRelPointer是該段重定位信息的絕對地址,它指向了重定位表的1個記錄。
        uiLNOffset是該段行號表的絕對地址,它指向的是行號表中的1個記錄。
        uiRelSize是重定位信息的記錄數,從uiRelPointer指向的記錄開始,到第ulNumRel個記錄為止,都是該段的重定位信息。
        uiLNSize和uiRelSize相似,不過它是行號信息的記錄數。
        uiFlags是該段的屬性標識,與下載相關的標識如表1所示。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 南昌县| 宁河县| 胶州市| 兖州市| 青阳县| 东乡县| 湛江市| 兴业县| 卫辉市| 增城市| 桂林市| 泗水县| 玉田县| 北京市| 田东县| 长葛市| 海淀区| 湖南省| 文登市| 贡觉县| 米泉市| 克东县| 玛沁县| 东乌珠穆沁旗| 西城区| 丹阳市| 普定县| 二连浩特市| 余庆县| 运城市| 宜春市| 通海县| 巴里| 新绛县| 靖江市| 绥棱县| 平遥县| 肃北| 米泉市| 昭通市| 漳浦县|