連接器腳本xxx.lds文件中指定的地址,就是鏈接地址,程序運行時必須位于它的鏈接地址處,匯編文件中的各個標號或者c文件中的各個函數名(函數的入口地址)對應的鏈接地址就是由鏈接腳本中的起始鏈接地址和各個目標文件(.s或.c文件編譯但還為鏈接的文件)的排放順序有關。這些鏈接地址可以通過查看可執行文件的反匯編文件即xxx.dis文件來獲得.
讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業的熱愛。我們立志把好的技術通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:域名與空間、虛擬空間、營銷軟件、網站建設、壽寧網站維護、網站推廣。
如果你不使用全局變量或者靜態變量,訪問這些變量時要使用到鏈接地址,重定位完成之前不能使用這些類型的變量,adr、b和bl指令都是屬于相對跳轉指令,即在當前pc值的基礎上加減一個偏移值,跳轉去執行。如果只使用adr、b或者bl指令,并且不訪問全局變量或者靜態變量,這類代碼被稱為“位置無關碼”,即代碼的存儲位置可以不在其鏈接地址處。如果當使用全局跳轉指令ldr時就只能使用鏈接地址了,如ldr pc,_reset。程序運行時,pc指針的內容是不區分原本地址(存儲地址)或鏈接地址的,只要是”位置無關碼“,存儲地址可以與鏈接地址不同,不是位置無關碼就要使用到鏈接地址,即存儲地址與鏈接地址必須相同。即使用之前必須完成代碼的重定位。
ps:望采納!
答案是B.
確切地說是,R1的數據+R2的數據合成一個地址值,該地址中存放的數據賦值給R0
LDR指令是從某存儲空間取數據,賦值給某寄存器.
這是ARM匯編,和Linux有什么關系?
建議看看ARM匯編的解釋
這些都是指令,cpu拿到下一條命令后根據指令表來區分命令種類和參數,然后根據該命令來執行。
1、ARM指令集LDR字數據加載指LDRB 字節數據加載指令,STRB字節數據存儲指SUBS需要借位,SUB和SBC生成進位標志的方式不同于常規,如果需要借位則清除進位標志,所以指令要對進位標志進行一個非操作。
2、第一個64位操作數存放在寄存器R2,R3中第二個64位操作數存放在寄存器R4,R5中64位結果存放在R0R1中,64位的減法第一個操作數減去第二個操作數,可由以下語句實現SUBS R0,R2,R4; 低32位相減,S表示結果影響條件標志位的值。
3、SBC R1,R3,R5; 高32位相減CMP 比較指令格式CMPcond Rn,op1功能Rn-op1該指令進行一次減法運算,但不存儲結果,根據結果更新CPSR中條件標志位的值。
4、該指令不需要顯式地指定S后綴來更改狀態標志其中,操作數op1為寄存器或立即數,LDR指令的格式為LDR目的寄存器,存儲器地址。
名稱欄目:linuxldr命令 linux ldd命令功能
標題來源:http://vcdvsql.cn/article30/doiscpo.html
成都網站建設公司_創新互聯,為您提供域名注冊、ChatGPT、品牌網站制作、品牌網站建設、營銷型網站建設、全網營銷推廣
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯