編譯地址和運行地址

編譯地址

32位的處理器,它的每一條指令都是4個字節(jié),以4個字節(jié)存儲順序,進行順序執(zhí)行,CPU是順序執(zhí)行的,只要沒有發(fā)生什么跳轉(zhuǎn),它會順序進行執(zhí)行,編譯器會對每一條指令分配一個編譯地址, 這是編譯器分配的, 在編譯過程中分配的地址, 我們稱之為編譯地址.

運行地址

? 是指程序指令真正運行的地址太防,是由用戶指定的,用戶將運行地址燒錄到哪里,哪里就是運行的地址姥卢。比如有一個指令的編譯地址是0x5,實際運行的地址是0x200穆咐,如果用戶將指令燒到0x200上,那么這條指令的運行地址就是0x200.

? 當(dāng)編譯地址和運行地址不同的時候會出現(xiàn)什么結(jié)果?結(jié)果是不能跳轉(zhuǎn)励负,編譯后會產(chǎn)生跳轉(zhuǎn)地址,如果實際地址和編譯后產(chǎn)生的地址不相等匕得,那么就不能跳轉(zhuǎn)继榆。

? C語言編譯地址:都希望把編譯地址和實際運行地址放在一起的,但是匯編代碼因為不需要做C語言到匯編的轉(zhuǎn)換耗跛,可以人為的去寫地址裕照,所以直接寫的就是他的運行地址這就是為什么任何bootloader剛開始會有一段匯編代碼,因為起始代碼編譯地址和實際地址不相等调塌,這段代碼和匯編無關(guān),跳轉(zhuǎn)用的運行地址.

編譯地址和運行地址如何計算

  1. 假如有兩個編譯地址a=0x10惠猿,b=0x7羔砾,b的運行地址是0x300,那么a的運行地址就是b的運行地址加上兩者編譯地址的差值偶妖,a-b=0x10-0x7=0x3姜凄,

? a的運行地址就是0x300+0x3=0x303。

  1. 假設(shè)uboot上兩條指令的編譯地址為a=0x33000007和b=0x33000001趾访,這兩條指令都落在bank6上态秧,現(xiàn)在要計算出他們對應(yīng)的運行地址,要找出運行地址的始地址扼鞋,這個是由用戶燒錄進去的申鱼,假設(shè)運行地址的首地址是0x0,則a的運行地址為0x7云头,b為0x1捐友,就是這樣算出來的。

相對地址

? 以NOR Flash為例溃槐,NOR Falsh是映射到bank0上面匣砖,SDRAM是映射到bank6上面,uboot和內(nèi)核最終是在SDRAM上面運行昏滴,最開始我們是從Nor Flash的零地址開始往后燒錄猴鲫,uboot中至少有一段代碼編譯地址和運行地址是不一樣的,編譯uboot或內(nèi)核時谣殊,都會將編譯地址放入到SDRAM中拂共,他們最終都會在SDRAM中執(zhí)行,剛開始uboot在NOR Flash中運行蟹倾,運行地址是一個低端地址匣缘,是bank0中的一個地址猖闪,但編譯地址是bank6中的地址,這樣就會導(dǎo)致絕對跳轉(zhuǎn)指令執(zhí)行的失敗肌厨,所以就引出了相對地址的概念培慌。

? 至少在bank0中uboot這段代碼要知道不能用b+編譯地址這樣的方法去跳轉(zhuǎn)指令,因為這段代碼的編譯地址和運行地址不一樣柑爸,那如何去做呢吵护?

? 要去計算這個指令運行的真實地址,計算出來后再做跳轉(zhuǎn)表鳍,應(yīng)該是b+運行地址馅而,不能出現(xiàn)b+編譯地址,而是b+運行地址譬圣,而運行地址是算出來的瓮恭。

_TEXT_BASE:
.word TEXT_BASE //0x33F80000,在board/config.mk中這段話表示,用戶告訴編譯器編譯地址的起始地址

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末厘熟,一起剝皮案震驚了整個濱河市屯蹦,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌绳姨,老刑警劉巖登澜,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異飘庄,居然都是意外死亡脑蠕,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門跪削,熙熙樓的掌柜王于貴愁眉苦臉地迎上來谴仙,“玉大人,你說我怎么就攤上這事切揭∧酰” “怎么了?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵廓旬,是天一觀的道長哼审。 經(jīng)常有香客問我,道長孕豹,這世上最難降的妖魔是什么涩盾? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮励背,結(jié)果婚禮上春霍,老公的妹妹穿的比我還像新娘。我一直安慰自己叶眉,他們只是感情好址儒,可當(dāng)我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布芹枷。 她就那樣靜靜地躺著,像睡著了一般莲趣。 火紅的嫁衣襯著肌膚如雪鸳慈。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天喧伞,我揣著相機與錄音走芋,去河邊找鬼。 笑死潘鲫,一個胖子當(dāng)著我的面吹牛翁逞,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播溉仑,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼挖函,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了浊竟?” 一聲冷哼從身側(cè)響起挪圾,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎逐沙,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體洼畅,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡吩案,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了帝簇。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片徘郭。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖丧肴,靈堂內(nèi)的尸體忽然破棺而出残揉,到底是詐尸還是另有隱情,我是刑警寧澤芋浮,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布抱环,位于F島的核電站,受9級特大地震影響纸巷,放射性物質(zhì)發(fā)生泄漏镇草。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一瘤旨、第九天 我趴在偏房一處隱蔽的房頂上張望梯啤。 院中可真熱鬧,春花似錦存哲、人聲如沸因宇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽察滑。三九已至打厘,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間杭棵,已是汗流浹背婚惫。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留魂爪,地道東北人先舷。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像滓侍,于是被迫代替她去往敵國和親蒋川。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容