在ARM處理器里主要是通過3中情況在控制程序執(zhí)行的:1.流水方式執(zhí)行程序,PC的值是下一條指令的地址,即每執(zhí)行一條指令PC都加一個(gè)字的偏移。2.通過跳轉(zhuǎn)指令來控制程序執(zhí)行。 B 跳轉(zhuǎn)到指定的指令處執(zhí)行。 B
編譯u-boot時(shí),在Makefile 的ALL變量最后加上$(obj)u-boot.dis,會編譯出u-boot.dis,u-boot.dis是通過arm-linux-objdum –d 生成u-boot的每一條指令的反匯編。33d80080: e59f13f4 ldr r1, [pc, #1012]
跳轉(zhuǎn)指令B使程序跳轉(zhuǎn)到指定的地址執(zhí)行程序。帶連接的跳轉(zhuǎn)指令BL將下一條指令的地址拷貝到r14(即返回地址連接寄存器LR)寄存器中,然后跳轉(zhuǎn)到指定地址運(yùn)行程序。需要注意的是,這兩條指令和目標(biāo)地址處的指令都要屬于ARM指令集。兩條指令都可以根據(jù)CPSR中的條件標(biāo)志位的值決定指令是否執(zhí)行。