亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 816 | 回復: 0
打印 上一主題 下一主題

關(guān)于ARM跳轉(zhuǎn)指令b的一點理解 [復制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2011-12-21 08:41 |只看該作者 |倒序瀏覽

從學習arm匯編開始就一直以為arm的指令b是一個絕對跳轉(zhuǎn)指令,最近在學習u-boot,看到一處使用b的例子,覺得這個指令并不是直接跳轉(zhuǎn)那么回事。

寫了個測試的例子:

head.s

====================

.global _start
.text
_start:
        b reset
        b aa
        b bb
        b 0x30
reset:
        .space 8,0xab
aa:     .word 0xdeadbeef
        .space 8,0xab
bb:     .word 0xdeadbeef
        .word 0xdeadbeef
        .end
====================

執(zhí)行命令:arm-none-eabi-gcc -mcpu=arm7tdmi -c head.s -o head.o&&arm-none-eabi-gcc -Ttext 0x0 -mcpu=arm7tdmi -nostartfiles head.o -o head.elf&&arm-none-eabi-objdump -d head.elf 后的輸出結(jié)果如下(反匯編):

==================

Disassembly of section .text:

00000000 <_start>:
   0:   ea000002        b       10 <reset>
   4:   ea000003        b       18 <aa>
   8:   ea000005        b       24 <bb>
   c:   ea000004        b       24 <bb>

00000010 <reset>:
  10:   abababab        .word   0xabababab
  14:   abababab        .word   0xabababab

00000018 <aa>:
  18:   deadbeef        .word   0xdeadbeef
  1c:   abababab        .word   0xabababab
  20:   abababab        .word   0xabababab

00000024 <bb>:
  24:   deadbeef        .word   0xdeadbeef
  28:   deadbeef        .word   0xdeadbeef

==================

從上面的例子可以看到:

b reset==>ea000002

b aa==>ea000003

b bb==>ea000005

b 0x30==>ea000004

從上面可以發(fā)現(xiàn)規(guī)律:指令所要跳轉(zhuǎn)到的標號地址=執(zhí)行這條指令時PC的值(這條指令的地址值+8,預(yù)取指的原因)+機器碼中的立即數(shù)*4

比如,<reset>=0+8+2*4=0x10  <aa>=4+8+3*4=0x18

也就是標號處是當前指令的地址向后數(shù)(機器碼中的立即數(shù)+2)個指令,也就是它跳轉(zhuǎn)時是相對PC當前值的。

至于直接跳轉(zhuǎn)到數(shù)字值(上面的b 0x30)怎么生成的地址,還沒搞清楚。。。

至少,從這個例子可以看出,b指令也是相對跳轉(zhuǎn)指令,它所要跳到的標號跟當前指令的地址有關(guān)。

(這個是自己的理解,歡迎大牛批評指正。

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

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP