熟女俱乐部五十路二区av,又爽又黄禁片视频1000免费,国产卡一卡二卡三无线乱码新区,中文无码一区二区不卡αv,中文在线中文a

新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > ARM處理器的位置無關程序設計

ARM處理器的位置無關程序設計

作者: 時間:2011-09-26 來源:網(wǎng)絡 收藏

  上述匯編代碼段經(jīng)編譯后的結果為:

  LDR R1, [PC, OFFSET_TO_GPIO_BASE]

  LDR R0, [PC, OFFSET_TO_init_GPDR0]

  STR R0, [R1, #0xc]?

  GPIO_BASE

  DCD 0x40e00000

  GPDR0

  DCD 0x00c

  init_GPDR0

  DCD 0xfffbfe00

  可見,LDR偽指令實際上使用基于PC的偏移量來對符號常量GPIO_BASE和init_GPDR0進行引用,因而是的。由此可以得出如下結論:使用LDR偽指令將一個常量讀取到非PC的其他通用寄存器中可實現(xiàn)的常量訪問;但將一個地址值讀取到PC中進行程序跳轉(zhuǎn)時,跳轉(zhuǎn)目標則是相關的。

 ?。?) 規(guī)范2

  其他被ROPI段中的代碼引用的必須是絕對地址,或者是基于可讀寫位置(RWPI)段的靜態(tài)基址寄存器的可寫數(shù)據(jù)。

  使用絕對地址只能引用被重定位到特定位置的代碼段中的符號,通過在位置無關代碼中引入絕對地址,可以讓程序跳轉(zhuǎn)到指定位置。例如,假設Bootloader的階段1將其自身代碼拷貝到鏈接時所指定的SDRAM地址空間后,當要跳轉(zhuǎn)到階段2的C程序入口時,可以使用指令“LDR PC, =main”跳轉(zhuǎn)到程序在SDRAM中的main函數(shù)入口地址開始執(zhí)行。這是因為程序在編譯鏈接時給main函數(shù)分派絕對地址,系統(tǒng)通過將main函數(shù)的絕對地址直接賦給PC實現(xiàn)程序跳轉(zhuǎn)。如果使用相對跳轉(zhuǎn)指令“B main”,那么只會跳轉(zhuǎn)到啟動ROM內(nèi)部的main函數(shù)入口。



上一頁 1 2 下一頁

評論


相關推薦

技術專區(qū)

關閉