精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

詳解匯編語言B和LDR指令與相對跳轉和絕對跳轉的關系

開發 前端
為什么要有相對跳轉和絕對跳轉?順序執行:指令一條一條按照順序往下執行,比如變量的定義和賦值都是按照順序執行的。跳轉執行:當指令執行到當前位置后跳轉到其他位置執行。

為什么要有相對跳轉和絕對跳轉?

順序執行:指令一條一條按照順序往下執行,比如變量的定義和賦值都是按照順序執行的。跳轉執行:當指令執行到當前位置后跳轉到其他位置執行。比如,在主函數中調用其他函數就是典型的跳轉執行。其中跳轉又分為絕對跳轉和相對跳轉。絕對跳轉:直接跳轉到一個固定的,實實在在的地址。相對跳轉:相對于當前pc值的一個跳轉,跳轉到pc+offset的地址。

[[358572]]

我們清楚了上面幾個概念,就知道了為什么要有相對跳轉和絕對跳轉。各種指令相互配合才能使得cpu有更高的處理效率。正是因為有了順序和跳轉指令,我們的cpu才可以處理各種復雜的計算。

在程序中只有相對跳轉/絕對跳轉是否可以?

答案肯定是不可以的。我們以一個例子具體分析。指令編號 | 指令功能-------- | -----| -----指令1 | 順序執行指令2 | 順序執行指令3 |相對跳轉到指令5指令4 | 順序執行指令5 | 順序執行指令6 | 絕對跳轉到指令8指令7 | 順序執行指令8 | 順序執行

假設程序被放在0x00000000位置開始執行,編譯鏈接后的結果為:

  • 指令地址 | 指令編號 | 指令功能 | 下條指令地址-------- | -----| -----| -----| -----0x00000000 | 順序執行| 順序執行| 當前地址+40x00000004 | 順序執行| 順序執行| 當前地址+40x00000008 |跳轉到指令5|跳轉到指令5|當前地址+80x0000000C | 順序執行 | 順序執行 | 當前地址+40x00000010 | 順序執行 | 順序執行 | 當前地址+40x00000014 | 跳轉到指令8| 跳轉到指令8| 0xC000001C0x00000018 | 順序執行| 順序執行|當前地址+40x0000001C | 順序執行 | 順序執行 | 當前地址+4

 

詳解匯編語言B和LDR指令與相對跳轉和絕對跳轉的關系

當這段程序被放在0xC000000空間時,開始執行指令1,然后采用相對尋址的方法就可以運行到指令6,在指令6執行時也可以使用絕對尋址的方法從0xC0000014正確跳轉到指令8所在的0xC00001C位置,這段代碼運行正常。

當這段代碼被放在0x00000000空間時,開始執行指令1,然后采用相對尋址的方法就可以運行到指令6,但在指令6執行時使用絕對尋址的方法從0x0000014跳轉到了0xC000001C,但0xC000001C空間沒有代碼,這樣程序就跑飛了。

因此,當編譯地址(加載地址)和運行地址相同時,絕對跳轉和相對跳轉都可以正確執行。比如,程序在NORFLASH存儲時。但是,當編譯地址(加載地址)和運行地址不相同時,相對跳轉都就會出現問題。比如,代碼存儲在NANDFLASH,由于NANDFLASH并不能運行代碼,所以需要重定位代碼到內部的SRAM。關于NANDFLASH和NORFLASH可以看這篇文章S3C2440從NAND Flash啟動和NOR FLASH啟動的問題。

B(BL)和LDR指令具體怎么執行的?

我們以下圖中的這句跳轉代碼分析下指令具體的執行過程。

 

  1. #ifndef CONFIG_SKIP_LOWLEVEL_INIT 
  2.     bl    cpu_init_crit 
  3. #endif 

  上述代碼對應的反匯編代碼如下:

 

  1. 33f000ac:    eb000017     bl    33f00110 <cpu_init_crit> 
  2.  
  3. 33f00110 <cpu_init_crit>: 
  4. 33f00110:    e3a00000     mov    r0, #0    ; 0x0 
  5. 33f00114:    ee070f17     mcr    15, 0, r0, cr7, cr7, {0} 

當指令執行到33f000ac時,對應的機器碼為eb000017(1110 1011 0000 0000 0000 0000 0001 0111‬),其中[31,28]高四位為條件碼,1110表示無條件執行。[25,27]位保留區域,24位表示是否帶有返回值,1表示帶有返回值,也就是BL指令。[23,0]為指令的操作數,0000 0000 0000 0000 0001 0111。按照如下計算方式:

  • 將指令中24位帶符號的補碼立即數擴展為32位(擴展其符號位)原數變成 0000 0000 0000 0000 0000 0000 0001 0111。
  • 將此數左移兩位0000 0000 0000 0000 0000 0010 1000 0000 變成 0000 0000 0000 0000 0000 0000 0101 1100 = 0x0000005c
  • 將得到的值加到PC寄存器中得到目標地址,由于ARM為3級流水線,此時的 pc = 33f000ac+8 = 33F000B4,pc = 33F000B4 + 0x0000005c = 33F00110‬與圖中的cpu_init_crit的地址相等。

在算的過程中我們使用的始終是PC的值,假設程序在 0 地址處執行,那么計算方法一樣,pc 的值變了計算出來的結果也隨之改變。所以 BL 的跳轉時與位置無關的。

下圖為B(BL)指令的格式

詳解匯編語言B和LDR指令與相對跳轉和絕對跳轉的關系

28~31bts(cond)是條件碼,就是表明這條語句里是否有大于、等于、非零等的條件判斷,這4bts共有16種狀態,分別為:

詳解匯編語言B和LDR指令與相對跳轉和絕對跳轉的關系

下圖為LDR指令的格式

詳解匯編語言B和LDR指令與相對跳轉和絕對跳轉的關系
詳解匯編語言B和LDR指令與相對跳轉和絕對跳轉的關系

  我們以下圖中的第一句話作為例子分析下

  1. ldr pc,=call_board_init_f 

對應的反匯編代碼如下:

 

  1. 33f000d0:    e59ff324     ldr    pc, [pc, #804]    ; 33f003fc <fiq+0x5c> 
  2.  
  3. 33f003fc:    33f000d4     .word    0x33f000d4 
  4. ........ 
  5. 33f000d4 <call_board_init_f>: 
  6. 33f000d4:    e3a00000     mov    r0, #0    ; 0x0 

ldr pc, [pc, #804]這條指令為偽指令,編譯的時候會將call_board_init_f的鏈接地址存入一個固定的地址(鏈接時確定的),對于本條指令這個地址就是33f000d4 。上面的反匯編出來的 ldr pc,=call_board_init_f就變成了ldr pc, [pc, #804],由于ARM使用了流水線的原因,所以在執行 ldr pc. [ pc, #4 ]的時候 pc 不在這句代碼這里了,而是跑到了 pc+8的地方,這句代碼相當于 pc = *(pc+804+8)=33f000d0+32C=33f003fc ,所以會跳轉到33f003fc 地址取33f000d4 ,而33f000d4 是存在代碼段中的一個常量,并不是計算出來的,不會隨程序的位置而改變,所以無論代碼和pc怎么變 *(pc+804) 的值時不會變的。

這樣,絕對跳轉中的固定地址就很好理解了,要跳轉地址的值在鏈接時就已經確定了,存在了一塊內存中。而相對跳轉時,反匯編bl 33f00110中的33f00110是根據pc計算出來的,當pc改變時,結果也會改變,所以,稱為相對跳轉,與當前位置無關。

B(BL)和LDR跳轉范圍是如何規定的?

下圖為B(BL)指令的格式

詳解匯編語言B和LDR指令與相對跳轉和絕對跳轉的關系

BL指令的[23,0]bits存放的是要跳轉的相對地址,由于指令所在地址必須是4字節對齊的,因此跳轉的地址最低bits必然是0,因此BL指令[23,0]bits保存的是省略這最低2bts的地址,如果補全了這2bits,BL指令就可以表示26bits的跳轉地址。在這26bits中需要使用1bit表示向前跳還是向后跳,那么剩下的25bits就可以表示32 MBts的范圍了,225=32M因此,B(BL)指令的跳轉范圍為-32MBytes~+32MBytes。

下圖為LDR指令的格式

詳解匯編語言B和LDR指令與相對跳轉和絕對跳轉的關系
詳解匯編語言B和LDR指令與相對跳轉和絕對跳轉的關系

圖中的LDR的跳轉范圍計算方式和B指令的類似,其中Rn和Address_mode共同構成第二個操作數的內存地址,由Address_mode的9種格式可以直到,Address_mode表示的就是偏移地址的范圍大小,為212=4K。(不理解的可以對比下ldr pc, [pc, #804]和Address_mode的九種格式,很明顯可以看出Address_mode就是當前地址的偏移范圍)

責任編輯:未麗燕 來源: 今日頭條
相關推薦

2023-06-01 16:27:34

匯編語言函數

2010-11-09 09:51:52

匯編語言

2018-09-07 18:25:47

2011-01-14 14:08:17

Linux匯編語言

2010-09-10 12:40:06

CSS相對定位CSS絕對定位

2011-01-14 14:39:32

Linux匯編語言

2015-03-30 14:03:13

ActivityGroActivity跳轉

2010-09-10 11:32:23

CSS絕對定位CSS相對定位

2022-08-13 12:13:13

RTOS延時代碼

2010-08-16 11:28:02

DIV

2010-03-18 08:48:30

Python入門

2012-02-09 09:00:54

匯編語言

2021-03-10 12:43:06

LDR指令函數

2010-09-14 16:39:26

CSS DIV相對定位CSS DIV絕對定位

2010-08-26 16:48:48

DIV絕對定位相對定位

2010-09-06 11:17:19

CSS相對定位CSS絕對定位

2011-01-14 14:15:11

Linux匯編語言

2011-01-14 14:22:50

Linux匯編語言

2021-06-11 10:02:39

語言編程開發

2011-01-04 17:08:10

匯編語言
點贊
收藏

51CTO技術棧公眾號

久久99亚洲网美利坚合众国| 亚洲自拍第二页| 亚洲成a人片77777在线播放| 在线看日本不卡| 99热一区二区三区| 天堂av2024| 久久精品国产99| 久久久久久999| 国产精品高清无码在线观看| 成人噜噜噜噜| 色婷婷综合中文久久一本| 一本色道久久综合亚洲精品婷婷| 成人久久精品人妻一区二区三区| 日韩一区精品视频| 欧美激情精品久久久久久大尺度 | 国产午夜精品全部视频播放 | 欧美精品国产白浆久久久久| 欧美视频精品在线观看| 欧美一区二区激情| 一本一道波多野毛片中文在线| 成人免费看视频| 国产日韩综合一区二区性色av| 亚洲男人的天堂在线视频| 偷偷www综合久久久久久久| 日韩精品在线视频观看| 在线观看视频你懂得| 免费观看成人性生生活片 | 一级片一区二区三区| 亚洲毛片视频| 久久99热精品| 亚洲一二三在线观看| 狠狠色丁香婷婷综合影院| 欧美精品一区二区三区蜜桃| 日韩 国产 一区| 一呦二呦三呦精品国产| 欧美午夜无遮挡| 无码人妻少妇伦在线电影| 麻豆视频在线| 国产精品色在线| 日韩视频专区| 国模精品一区二区| 久久婷婷国产综合国色天香| 国产在线精品一区二区三区| 精品国产无码AV| 精品亚洲成a人| 国产精品自在线| 欧美一级黄视频| 蜜乳av另类精品一区二区| 26uuu亚洲伊人春色| 日韩精品――中文字幕| 欧美日韩影院| 欧美黑人xxx| 一区二区成人免费视频| 99久久夜色精品国产亚洲96| 一区二区三区四区在线观看视频| 成年人免费观看视频网站| 欧美男人操女人视频| 欧美一卡二卡在线观看| 日本r级电影在线观看| 国产精一区二区| 日韩一区二区三区四区五区六区| 欧美视频亚洲图片| 91午夜精品| 亚洲精品在线观看视频| 国产麻豆xxxvideo实拍| 伊人春色之综合网| 亚洲午夜小视频| 日韩一区二区三区四区视频| 国产精品99视频| 久久99亚洲热视| 国产成人亚洲精品自产在线| 欧美亚洲一区二区三区| 国产精品久久久久久久久| 亚洲一线在线观看| 国产精品456露脸| 国产麻豆乱码精品一区二区三区| 四虎影视在线播放| 久久久午夜精品| 亚洲巨乳在线观看| 97caopron在线视频| 亚洲一区二区精品3399| 女性女同性aⅴ免费观女性恋| 黄色亚洲网站| 欧美久久免费观看| 国产精品一区二区无码对白| 亚洲区小说区图片区qvod| 中文字幕精品在线| 久久中文字幕无码| 另类图片国产| 亚洲综合在线做性| 天堂中文在线资| 中文字幕亚洲一区二区va在线| av久久久久久| 三上悠亚一区二区| 91精品蜜臀在线一区尤物| 无码任你躁久久久久久老妇| 狠狠做六月爱婷婷综合aⅴ| 久久最新资源网| 激情视频网站在线观看| 国产一区二区三区蝌蚪| 美女视频久久| 天堂va在线| 在线观看一区二区视频| 国产免费无码一区二区| 精品一区av| 久久久爽爽爽美女图片| 自拍偷拍色综合| 成人v精品蜜桃久久一区| 日韩精品久久一区二区三区| 青春草在线免费视频| 色视频一区二区| 国产成人精品一区二区在线小狼| 成人久久综合| 人体精品一二三区| www.97av| 国产精品传媒在线| 成人精品视频一区二区| 国产女人18毛片水真多18精品| 日韩在线观看免费| 狠狠人妻久久久久久| 高清在线观看日韩| 婷婷视频在线播放| 免费观看成人性生生活片| 亚洲国内高清视频| 亚洲色婷婷一区二区三区| 免费成人在线观看视频| 久久99导航| gogo久久| 亚洲第一精品久久忘忧草社区| 国产一区在线观看免费| 久久香蕉精品| 蜜桃狠狠色伊人亚洲综合网站| 免费看电影在线| 日韩欧美国产午夜精品| 亚洲一区电影在线观看| 日本91福利区| 日韩国产美国| 日韩一区精品| 亚洲三级黄色在线观看| 五月婷婷视频在线| aa级大片欧美| 久久国产精品视频在线观看| 91成人噜噜噜在线播放| 欧美激情精品久久久久久久变态 | 波多野结衣亚洲一区| www.av91| 国产精品videossex| 久久久欧美一区二区| 国产 欧美 自拍| 亚洲一区二区三区精品在线| yjizz视频| 99国产精品视频免费观看一公开| 久草精品电影| 国产精品久久久久av电视剧| 在线观看日韩欧美| 中文字幕一区二区人妻痴汉电车| 中文字幕欧美日本乱码一线二线| 一道本视频在线观看| 久久国产精品亚洲人一区二区三区| 国产精品免费久久久久影院| 拍真实国产伦偷精品| 欧美区视频在线观看| 久久国产波多野结衣| 国产精品一区免费视频| 国产原创中文在线观看| 亚洲传媒在线| 国产日韩欧美一二三区| 黄色网在线播放| 精品国产伦一区二区三区免费| 国产无遮挡aaa片爽爽| 91视频免费观看| 九九九在线观看视频| 999精品视频| 国产精品对白刺激久久久| 国产精品yjizz视频网| 亚洲欧美福利视频| 91成人一区二区三区| 一区二区三区免费在线观看| 漂亮人妻被黑人久久精品| 久久亚洲图片| 99热一区二区三区| 欧美变态网站| 成人福利网站在线观看11| av在线免费网站| 亚洲精品一区二区久| 中文字幕一区二区三区人妻四季| 亚洲男人的天堂网| 久久无码人妻精品一区二区三区| 日韩国产欧美一区二区三区| 最新国产精品久久| 日韩电影在线观看完整免费观看| 国产精品视频一区二区三区四| 伊人福利在线| 国产亚洲精品久久久久动| 国产美女免费视频| 精品国产1区2区| 午夜剧场免费在线观看| 97精品国产97久久久久久久久久久久| 性生活免费在线观看| 亚洲裸体俱乐部裸体舞表演av| 亚洲欧美日韩另类精品一区二区三区| 6080成人| 国产欧美在线视频| 午夜av不卡| 欧美猛交ⅹxxx乱大交视频| 激情小视频在线| 精品日韩在线观看| 中文 欧美 日韩| 欧美色播在线播放| 1024手机在线视频| 欧美经典一区二区三区| 久久久国产精品无码| 国产一区视频在线看| 国产自偷自偷免费一区| 一本久道综合久久精品| 欧美少妇一区二区三区| 日韩电影免费网址| 欧美日产一区二区三区在线观看| 亚洲网一区二区三区| 91美女片黄在线观看游戏| 日本中文字幕一区二区| 2019日本中文字幕| 丁香花视频在线观看| 美女av一区二区三区| 日本三级视频在线观看| 国产一区二区日韩精品欧美精品| 天堂中文在线资源| 欧美mv和日韩mv的网站| 国产免费的av| 欧美精品第1页| 波多野结衣电影在线播放| 黑人精品xxx一区| 日本在线视频免费| 亚洲一级片在线观看| 欧美黄色aaa| 亚洲精品视频在线观看免费| 婷婷国产成人精品视频| 国产精品色噜噜| 久久精品色妇熟妇丰满人妻| 国产午夜精品理论片a级大结局| 欧美色图亚洲激情| 91在线看国产| 播金莲一级淫片aaaaaaa| 99r国产精品| 丰满少妇一区二区三区| 99天天综合性| 中文字幕国产专区| 久久久久国色av免费看影院| 人妻少妇无码精品视频区| 久久久av毛片精品| 阿v天堂2014| 中文字幕不卡一区| 天天操夜夜操av| 亚洲人精品午夜| 久久精品视频免费在线观看| 亚洲综合一二三区| 国产无遮挡又黄又爽又色| 亚洲不卡在线观看| 最新中文字幕一区| 91成人免费网站| 在线观看中文字幕码| 7799精品视频| 亚洲精品国产片| 精品无人区乱码1区2区3区在线| 免费一级在线观看播放网址| 蜜桃久久av一区| 国产97在线|亚洲| 欧美国产日韩电影| 国产专区精品视频| 911亚洲精品| 欧美在线一二三区| 国产电影一区二区在线观看| 看一级黄色录像| 国产精品99一区二区| 国产精品网站免费| 快she精品国产999| 亚洲 国产 图片| 成+人+亚洲+综合天堂| 97超碰在线免费观看| 国产精品久久福利| 欧美黄色免费观看| 第一福利永久视频精品| 人妻中文字幕一区二区三区| 欧美一级日韩一级| 污视频软件在线观看| 亚洲精品中文字幕女同| 午夜国产福利在线| 欧美激情欧美激情| 亚洲综合电影| 91精品免费久久久久久久久| silk一区二区三区精品视频| 色播亚洲婷婷| 欧美日韩99| 国产一区二区视频免费在线观看| 久久99国产精品免费| 国产又粗又猛又色| 国产精品久久久久久久久免费樱桃| 欧美久久久久久久久久久久| 色88888久久久久久影院按摩| 99热这里只有精品在线| 国产亚洲欧美视频| 岛国av在线播放| 成人免费观看a| 亚洲精品456| 国产日韩亚洲欧美在线| 免费精品视频最新在线| 日本黄色免费观看| 亚洲欧美电影一区二区| 国产女主播喷水视频在线观看 | yourporn在线观看中文站| 欧美激情亚洲综合一区| 成人在线黄色| 久久久久久亚洲精品不卡4k岛国| 一精品久久久| 天天操天天爱天天爽| 97精品久久久午夜一区二区三区| 国产黄色小视频网站| 欧美三级乱人伦电影| 四虎精品成人影院观看地址| 欧美黑人又粗大| 亚洲欧洲一二区| 五月婷婷综合色| 久久国产一二区| 人体私拍套图hdxxxx| 亚洲精品一二三| 国产精品久久久久久久成人午夜 | 香蕉久久aⅴ一区二区三区| 国产精品欧美激情在线播放| 亚洲素人在线| 国产97在线 | 亚洲| 高清不卡在线观看| 久久97人妻无码一区二区三区| 欧美日韩高清一区二区三区| 国产日韩精品在线看| 日本高清视频精品| 色老头一区二区| 另类调教123区| 蜜桃av免费看| 亚洲看片一区| 91免费版网站在线观看| 久久资源中文字幕| 亚洲成人av免费看| 久久久久久久久免费| 久久久久久久久久久久久久av| 精品久久99ma| 第一av在线| 国产一区二区三区无遮挡| 亚洲精品婷婷| 艳妇乳肉豪妇荡乳xxx| 无吗不卡中文字幕| 日韩精品123| 日韩美女在线观看| 欧美日韩色图| 免费成年人高清视频| 国产精品久线在线观看| 伊人影院中文字幕| 久久久精品欧美| 97一区二区国产好的精华液| 国产内射老熟女aaaa| 成人污污视频在线观看| 日韩久久精品视频| 亚洲精品一区在线观看香蕉| 日韩成人亚洲| 老司机av福利| 成人自拍视频在线| 日本三级一区二区| 亚洲欧美一区二区精品久久久| 欧美与亚洲与日本直播| 日本欧美精品久久久| 久久99国产精品久久99果冻传媒| 国产三级国产精品国产国在线观看| 日韩欧美在线123| 2021中文字幕在线| 鲁鲁视频www一区二区| 日本欧洲一区二区| 小早川怜子一区二区的演员表| 日韩一区二区免费在线电影| 97在线视频免费观看完整版| 蜜桃久久精品乱码一区二区| 裸体在线国模精品偷拍| 欧美人与禽zozzo禽性配| 日韩毛片在线看| 亚洲精品伦理| 中文字幕无码精品亚洲资源网久久| 久久综合国产精品| 国产精品无码白浆高潮| 久久露脸国产精品| 精品国产91| 韩国三级视频在线观看| 欧美午夜免费电影| 国模私拍视频在线播放| 日韩av电影免费在线| 国产精品一二二区| 成人a v视频| 久久99精品久久久久久琪琪 | 精品一区二区三区香蕉蜜桃| 国产无遮挡aaa片爽爽| 日韩在线观看免费| 日日天天久久| 麻豆网站免费观看|