wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3165|回復: 0
收起左側

淺談RISC-V GCC之:鏈接腳本學習筆記(一)

[復制鏈接]
ID:809235 發表于 2021-11-5 15:28 | 顯示全部樓層 |閱讀模式
我們在用RISC-V GCC做嵌入式開發的時候,免不了要和啟動文件和鏈接文件等打交道,本篇文章記錄了一些鏈接腳本相關的學習筆記。
1.基礎概念
鏈接腳本的主要作用是描述輸入文件中的段應當如何映射到輸出文件中,并控制輸出文件的內存布局。多數鏈接腳本都執行類似功能。但是,如果需要,鏈接腳本也可以使用下面所描述的命令指揮鏈接器進行很多其他操作。
鏈接器通常使用一個鏈接腳本。如果沒有為其提供一個,鏈接器將會使用默認的編譯在鏈接器執行文件內部的腳本。可以使用命令’–verbose’顯示默認的鏈接腳本。
為了描述鏈接腳本語言,我們需要定義一些基本概念和詞匯。
鏈接器將許多輸入文件組合成一個輸出文件。輸出文件和每個輸入文件都有一個特定的已知格式成為目標文件格式。每個文件都被稱為目標文件。輸出文件通常叫做可執行文件,但我們仍將其稱為目標文件。每個目標文件在其他東西之間,都有一個段列表。有時把輸入文件的段稱作輸入段,類似的,輸出文件的段稱作輸出段。
每個目標文件中的段都有名字和大小。多數段還有一個相關的數據塊,稱為 段內容。一個段可能被標記為可加載,表示當輸出文件運行時,段內容需要先加載到內存中。一個沒有內容的段可能是可分配段,即在內存中留出一段空間(有時還需要清零)。一個即不是加載又不是可分配的段,通常含有一些調試信息。
每個加載或可分配輸出段有兩個地址。第一個地址為VMA,或者叫做虛地址。這是當輸出文件運行時段所擁有的地址。第二個地址是LMA,或者叫加載內存地址。這是段將會被加載的地址。一個它們會產生區別的例子是,當一個數據段加載到ROM, 此后在程序啟動時被復制到RAM中(這個技術通常被用來初始化全局變量)。此種情況下,ROM使用LMA地址,RAM使用VMA地址。
如果想查看目標文件中的段,可以用objdump程序的’-h’選項。
每個目標文件還有一個符號列表,稱為符號列表。一個符號可能是被定義的或者未定義的。每個符號都有一個名字,且所有已定義的符號在其他信息中間都有一個地址。如果將一個c或者c++程序編譯成目標文件,會將所有定義過的函數和全局變量以及靜態變量作為已定義符號。所有輸入文件引用的未定義的函數或者全局變量會成為未定義符號。
2.常用關鍵詞與用法
ENTRY(symbol) 用來指定程序執行的入口點
MEMORY            內存分配命令
SECTIONS            段命令 描述輸出文件的內存和布局
.text                 程序代碼段
.rodata              只讀數據
.data                可讀寫且需要初始化的數據
.bss                        可讀寫的清零初始化數據
ASSERT                     斷言
PROVIDE(symbol=expression)   定義一個符號
AT                         后跟MEMORY定義的內存區域或者地址
ALIGN                      字節對齊
3 . MEMORY
鏈接器默認的設置允許分配所有可用的內存。你通過MEMORY命令可以重載這些。
MEMORY命令描述了一個內存塊在目標中的位置和大小。你可以使用它描述一個可能會在鏈接器中使用的內存區域,以及那些必須避免使用的內存區域。此后你可以把段放到特定的內存區域里。鏈接器將會基于內存區域設置段地址,如果區域趨于飽和將會產生警告信息。鏈接器不會為了把段更好的放入內存區域而打亂段的順序。
一個鏈接腳本可能含有許多MEMORY命令,但是,所有定義的內存塊都被當作他們是在一個MEMORY命令中定義的一樣。MEMORY的語法是:
MEMORY
   {
     name [(attr)] : ORIGIN = origin, LENGTH =len
     ...
   }
name是鏈接腳本用來引用內存區域的名字。區域名在鏈接腳本外部沒有任何意義。區域名被存儲在一個獨立的名字空間,且不會與符號名,文件名,或者段名起沖突。每個內存區域必須在MEMORY命令中有一個不同的名字。但是你此后可以使用REGION_ALIAS命令為已存在的內存區域添加別名。
attr字符是一個可選的屬性列表,用來決定是否讓一個腳本中沒有顯式指定映射的輸入段使用一個特定的內存區域。就像SECTIONS中進行過的說明,如果你不為一個輸入段指定一個輸出段,鏈接器將會創建一個與輸入段名字相同的輸出段。如果你定義了區域屬性,鏈接器會使用他們來決定創建的輸出段存放的內存區域。
attr字符串只能使用下面的字符組成:
‘R’只讀段
‘W’讀寫段
‘X’可執行段
‘A’可分配段
‘I’已初始化段
‘L’類似于’I’
‘!’反轉其后面的所有屬性
如果一個未映射段匹配了上面除’!’之外的一個屬性,它就會被放入該內存區域。’!’屬性對該測試取反,所以只有當它不匹配上面列出的行何屬性時,一個未映射段才會被放入到內存區域。
origin是一個數字表達式,代表了內存區域的起始地址。表達式必須等價于一個常數并且不能含有任何符號。關鍵字ORIGIN縮短為org或者o(但不能寫成ORG)。
len是一個表達式用來給出內存區域中的字節數大小。類似于origin表達式,表達式必須只能為數字的切必須求值為常數。關鍵字LENGTH可以被縮寫為len或者l。
下面的例子里,我們制定了有兩個可分配的內存區域:一個從’0’開始有256k字節,另一個從’0x40000000’開始,由4兆字節。鏈接器把所有沒有顯式映射到一個內存區域的段放到’rom’內存區域內,段可以是只讀的或者可執行的。鏈接器將把其它沒顯式指定內存區域映射的段放到’ram’內存區域。
MEMORY
   {
     rom (rx) : ORIGIN = 0, LENGTH = 256K
     ram (!rx) : org = 0x40000000, l = 4M
   }
一旦你定義了一個內存區域,你可以使用’>region’輸出段屬性指引鏈接器把特殊輸出段放到該內存區域。例如,如果你擁有一個內存區域名為’mem’,你可以在輸出段定義中使用’>mem’。參考Output Section Region。如果沒有給輸出段指出地址,鏈接器將會把地址放到最先符合要求的內存區域中的可用地址。如果指引給一個內存區域的組合輸出段比區域還大,鏈接器將會提交錯誤。
可以通過ORIGIN(memory)和LENGTH(memory)函數獲得內存區域的起始地址以及長度:
   _fstack = ORIGIN(ram) + LENGTH(ram) - 4;
4. 段描述
4.1輸出段
完整的輸出段描述如下
section [address] [(type)] :
   [AT(lma)]
   [ALIGN(section_align) | ALIGN_WITH_INPUT]
   [SUBALIGN(subsection_align)]
   [constraint]
   {
     output-section-command
     output-section-command
     ...
   } [>region] [AT>lma_region] [:phdr:phdr ...] [=fillexp] [,]
地址(address)是一個輸出段VMA(虛地址)的表達式。此地址為可選參數,但如果給出了地址,則輸出地址就會被精確的設置到給定值。
如果輸出的地址沒有給定,則依照下面的嘗試選擇一個地址。此地址將會被調整到符合輸出端要求的對齊地址。輸出段的對齊要求是所有輸入節中含有的對齊要求中最嚴格的一個。
輸出段地址探索如下:
如果為段設置了內存區域,則段被放如該區域,并且段地址為區域中的下一個空閑位置。
如果使用MEMORY命令創建了一個內存區域列表,此時第一個屬性匹配段的區域被選擇來加載段,段地址為區域中的下一個空閑位置。參見MEMORY。
如果沒有指定的內存區域,或者沒有匹配段的,則輸出地址將會基于當前位置計數器的值
  4.2輸入段
輸入段存在于輸出段的內容中,用來指定不同輸入段在輸出段中的位置,常見的有.text .data  .rodat  .bss COMMOM等,一個輸入段描述由跟隨在段名稱后面括號包含的一個可選的文件名稱列表構成。也可以使用通配符,例如
*main.o(.text)或者直接*(.text)
前一個代表main.o 文件中所有.text段,后一個代表所有參與鏈接文件中的.text段,當然也可以排除一些文件
EXCLUDE_FILE (*文件名.o) *(.text)
5. 一些內建函數
ABSOLUTE(exp)
返回表達式exp的絕對(非可重分配的,而不是非負)值。主要用來在段定義內為符號分配一個絕對值,通常段定義內的符號值都是相對段地址的。
ADDR(section)
返回名為’section’的段的地址(VMA)。你的腳本必須事先未該段定義了位置。在下面的例子里,start_of_output_1, symbol_1, symbol_2分配了同樣的值,除了symbol_1為與段.output1相關的值而其他兩個為絕對值:
SECTIONS { ...
        .output1 :
          {
         start_of_output_1 = ABSOLUTE(.);
          ...
          }
        .output :
          {
          symbol_1 =ADDR(.output1);
          symbol_2 =start_of_output_1;
          }
      ... }
LENGTH(memory)
返回名為memory的內存的長度。
MAX(exp1, exp2)
返回exp1和exp2最大的
MIN(exp1, exp2)
返回exp1和exp2最小的。
ORIGIN(memory)
返回名為memory的內存區域的起始地址。
SIZEOF(section)
返回名為section段的字節數。如果段還沒被分配就是用函數求值,將會產生錯誤。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
日韩亚洲不卡在线| 欧美高清videos高潮hd| 精品一区二区在线免费观看| 青青草娱乐在线| 黄色一级视频免费| 99久久伊人精品影院| 日韩久久午夜影院| 五月天激情综合| 亚洲美女91| 亚洲**毛片| a级毛片免费观看在线| av在线你懂的| 色婷婷av一区二区三| 东京热无码av男人的天堂| 免费看又黄又无码的网站| 91精品国产自产在线观看永久| 国产一区二区黑人欧美xxxx| 欧美午夜宅男影院在线观看| 91尤物视频在线观看| 第一页在线观看| 91麻豆精品国产91久久| 一本一道人人妻人人妻αv| 91资源在线播放| 男操女免费网站| 国产内射老熟女aaaa| 国产精选在线观看91| 欧美激情奇米色| 97av在线视频免费播放| 亚洲香蕉伊综合在人在线视看 | 久久久久久久久久久一区| 久热在线中文字幕色999舞| 精品免费视频.| 天天色综合天天| 色国产精品一区在线观看| 亚洲特黄一级片| 成人免费精品视频| 老司机午夜精品| 亚洲黄色精品| 麻豆精品一区二区三区| 国产高清久久久久| 日本在线观看不卡视频| 亚洲午夜精品久久久久久app| 久久久伦理片| 日韩一区二区三区高清在线观看| 91久久精品无嫩草影院| 国产精品久久亚洲不卡| 伊人影院在线视频| 香蕉视频在线观看网站| 99在线欧洲视频| t66y最新发布地址| 爱爱网站免费| 一级在线免费观看| 伊人网在线视频| 日本在线观看大片免费视频| 国产最新在线| 五月婷婷在线视频| 中文字幕+乱码+中文字幕明步 | 法国伦理少妇愉情| 亚洲一区二区三区四区精品| 成人午夜视频免费在线观看| 国产911在线观看| www.日日操| 国产视频一区二区三区在线播放| 第一页在线视频| 中文字幕无码毛片免费看| 午夜免费视频网站| 波多野结衣三级视频| 亚洲 欧美 国产 另类| 毛片视频免费播放| 黄色大全在线观看| 国产日本精品视频| 国产极品999| 丰满熟女一区二区三区| 少妇荡乳情欲办公室456视频| 九色精品视频在线观看| 精品国产免费观看一区 | 国产一级片儿| 高清国产免费| 毛片基地一级大毛片| 夜夜狂射影院| 在线播放你懂的| 欧美成人性网| 经典三级久久| 中文字幕精品影院| 9191国语精品高清在线| av不卡免费看| 国产综合色在线| 成人性生交大片| 日韩欧美精品中文字幕| 最好看的2019年中文视频| 久久av中文字幕| 国产精品播放| 国产对白在线播放| 18岁视频在线观看| 波多野结衣久久久久| 欧美激情一区二区视频| 国产aⅴ爽av久久久久| 免费黄频在线观看| 日本网站在线免费观看| 影音先锋国产在线| 操操操com| 国产网红在线观看| 欧美高清你懂的| 精品按摩偷拍| 国产在线麻豆精品观看| 日韩一区中文字幕| 欧美主播一区二区三区美女| 精品卡一卡二卡三卡四在线| 青青草一区二区| 99视频国产精品免费观看| av免费在线播放网站| 免费一级片在线观看| 国产免费av网站| 牛牛电影国产一区二区| jizzjizzjizz欧美| 国产精品chinese| 久久国产婷婷国产香蕉| 欧美性猛交xxx| 97人人爽人人喊人人模波多| 久久国产精品一区二区三区四区| 中文字幕第17页| 亚洲 欧美 中文字幕| 日韩有码第一页| jizzjizzjizz美国| 都市激情综合| 日韩电影二区| 久久aⅴ国产欧美74aaa| 色噜噜久久综合| 国产精品99久久久久久久久| 日本在线高清视频一区| 能在线观看的av| 极品蜜桃臀肥臀-x88av| 亚洲视频 欧美视频| 中文xxx视频| 三级黄色网址| а√天堂中文在线资源8| 九九热播视频在线精品6| 成人永久aaa| 亚洲精品美女视频| 色综合视频网站| 久久国产精品亚洲va麻豆| 国产精品伦子伦| 亚洲天堂视频在线播放| 国产三级香港三韩国三级| 激情网站在线| 国产亚洲网站| 尤物在线观看一区| 美日韩一区二区| 亚洲一区二区三区四区在线免费观看 | 免费av网址在线| 丝袜美腿小色网| 日韩性xxxx| 亚洲视频tv| 国产精品草草| 欧美性一区二区| 久久久久久久久久久av| 一区二区在线中文字幕电影视频| 日韩av影视大全| 秋霞欧美在线观看| 呦呦在线视频| 久久 天天综合| 日韩精品一区在线观看| 国产精品你懂得| 男人日女人视频网站| 欧美波霸videosex极品| 在线观看xxxxvideo| 国产精品一区二区美女视频免费看 | 国产日韩欧美91| 久久手机视频| youjizz.com国产| 青青草免费av| 精品国产999久久久免费| 激情综合色综合啪啪开心| 97最新国自产拍视频在线完整在线看| www在线看| 欧美一区视频| 99久久免费视频.com| 亚洲v日本v欧美v久久精品| 久久精品国产免费观看| 成人激情综合网| 黄色小视频大全| 色偷偷男人天堂| 国内精品久久久久久影院8f| 18+视频在线观看| 欧美激情无毛| 午夜精品在线看| 欧美资源在线观看| 午夜视频在线瓜伦| 免费黄色一级大片| 亚洲小说区图片区情欲小说| 中老年在线免费视频| 精品久久久久久久| 久久99热这里只有精品| 7777精品伊人久久久大香线蕉| 亚洲女人被黑人巨大进入| 国产精品1234| 亚洲 欧美 另类人妖| 在线观看视频二区| 在线欧美成人| 日韩久久精品网| 一区二区三区不卡视频在线观看 | 久久99久久99| 欧美成人久久久免费播放| 18欧美乱大交| 精品国内自产拍在线观看视频 | 四虎884aa成人精品最新| 波多野结衣中文字幕一区二区三区| 精品国产a毛片| 色噜噜狠狠一区二区三区| 搜索黄色一级片| blackedav金发美女大战黑人| 国产videos久久| 亚洲国产你懂的| 国产精品视频久久久| 五月激情四射婷婷| 欧美成人片在线| 欧美三级不卡| 日韩av在线资源| 亚洲一区二区三区四区五区| 人人做人人爽人人爱| 激情视频极品美女日韩| 在线观看视频一区二区欧美日韩| 午夜一区二区三区| 日本xxxxwww| 777久久精品| 欧美三级一区二区| 久久99欧美| 亚洲一线在线观看| 激情小说亚洲| 色呦呦一区二区三区| 久久免费一区| 国产三级漂亮女教师| 亚洲高清国产拍精品26u| 国产精品一区二区美女视频免费看 | 涩涩日韩在线| 无码国精品一区二区免费蜜桃| 国产精品—色呦呦| 欧美极品美女视频| 国产不卡av在线| 亚洲精品午夜视频| 色偷偷福利视频| 成人黄色av| 欧美色国产精品| 国产精品wwwww| 另类图片亚洲色图| 精品一区二区日韩| 国产精品一区二区电影| 女同久久另类69精品国产| 国产福利在线| 中文字幕乱码日本亚洲一区二区 | 国产精品99在线观看| 欧美日韩综合在线免费观看| 黑人糟蹋人妻hd中文字幕| 成年人看的羞羞网站| 久久在线免费| 日韩一区二区三区在线| www污在线观看| 亚洲成年电人电影网站| 日韩欧美一级| 538在线一区二区精品国产| 高潮一区二区三区| 一个人看的www一区| 91免费看片在线观看| 国产精品麻豆va在线播放| 色一情一乱一伦| youjizz欧美| 亚洲免费电影在线观看| 国产又粗又猛又爽视频| 日本动漫理论片在线观看网站| 亚洲欧美另类久久久精品2019| 国产亚洲福利社区| 国产又黄又爽又色| 日韩激情av| 精品国产91久久久久久| 美女喷白浆视频| 美女桃色网站| 蜜臀久久99精品久久久画质超高清| 国产精品入口免费视频一| 国产福利资源在线| 97精品97| 日本精品va在线观看| 成人免费毛片播放| 2023欧美最顶级a∨艳星| 欧美aa在线视频| 91一区二区三区| 欧美三级网站在线观看| 亚洲电影一级片| 欧美成人激情视频| 黑人巨大精品一区二区在线| 六月婷婷综合| 欧美精品一区二区三区在线| 欧美激情 一区| 日韩电影大全网站| 精品国产乱码久久久久久牛牛| 日本美女bbw| 久久亚洲人体| 亚洲视频在线看| 99久久久无码国产精品衣服| 美女露胸视频在线观看| 亚洲一区二区综合| 一级片视频免费观看| 性网站在线免费观看| 国产喂奶挤奶一区二区三区| 久久五月天婷婷| 在线能看的黄色| 成人一区二区三区| 人妻无码一区二区三区四区| 天堂www在线а√天堂| 一本一本久久| 高清视频一区| 九色蝌蚪在线观看| 久久人人97超碰com| 日本中文不卡| 97午夜影院| 亚洲免费色视频| 白丝校花扒腿让我c| 中文字幕在线看片| 日韩精品在线观看一区二区| 国产一二三四在线| 亚洲成人毛片| 日韩有码在线电影| www.99re7.com| 日韩毛片免费看| 日韩视频中文字幕| 精品久久无码中文字幕| 日韩欧美大片| 成人国产精品免费视频| 国产美女视频网站| 久久久久久免费网| 亚洲天堂第一区| 看电影就来5566av视频在线播放| 午夜精品久久久久久久久久久| 91视频在线免费| 成人国产精品久久| 国产亚洲欧美日韩一区二区| 青青国产在线视频| 国产精品亚洲二区| 国内精品久久久久久中文字幕| 波多野结衣网站| 成人欧美一区| 欧美日韩免费网站| 亚洲综合伊人久久| 日韩国产激情| 久久视频在线直播| 午夜性爽视频男人的天堂| 成人免费电影视频| 男人女人黄一级| 国模冰冰炮一区二区| 欧美老肥婆性猛交视频| 77777_亚洲午夜久久多人| 日本伊人午夜精品| 老司机午夜免费福利视频| 国产在线色视频| 91福利视频网站| 久久激情免费视频| 欧美日韩一区二区国产| 一区二区三区四区在线视频| 免费看成人a| 国产精品丝袜在线| 最新日本中文字幕| 六月婷婷综合| 久久青草福利网站| 九色资源网91| 亚洲免费在线播放| 四虎影院中文字幕| 欧美国产专区| 欧洲金发美女大战黑人| 都市激情久久综合| 欧美日韩国产二区| 中国xxxx视频播放50| 亚洲一区二区三区美女| 希岛爱理中文字幕| 欧美日韩影院| 青青草精品视频在线| 中文日产幕无线码一区二区| 国内精品一区二区三区| 免费黄色影片在线| 色综合天天做天天爱| 在线观看国产亚洲| 蜜桃av一区二区在线观看| 亚洲一区二区蜜桃| 视频一区视频二区欧美| www日韩av| 国产免费av在线| 中文字幕久久久av一区| 久草国产视频| 色婷婷综合在线| 一区二区日韩在线观看| 老牛影视一区二区三区| 欧美一级爽aaaaa大片| 91在线电影| 亚洲福利视频久久| 亚洲一区二区色| 不卡av在线网| 色婷婷av777| 狼人精品一区二区三区在线| 国产精品国产三级欧美二区| 国产鲁鲁视频在线观看免费| 中文字幕在线成人| 影音先锋5566资源站|