91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

關于重定位代碼的淺顯理解

發布時間:2020-06-28 15:06:07 來源:網絡 閱讀:1164 作者:liuxu112 欄目:開發技術

首先需要朱有鵬老師,這是在學習了朱老師的課程之后的一點理解,代碼是根據朱老師的源碼學習之后編寫的。

關于重定位代碼的淺顯理解

根據反匯編代碼  d0024010:     e24f0018       sub      r0, pc, #24 可以看出通過adr匯編偽指令將加載地址寫入r0寄存器,此時因為adr指令采用相對尋址的尋址方式所以adr實際寫入r0寄存器的地址為程序的加載地址而非反匯編代碼所指示的0xd0024000,通過ldr偽指令將所需重定位的地址寫入r1寄存器,此時r1所存的地址為0xd0024064,該地址的內容為d0024000即為重定位的起始地址.ldr偽指令將bss段的起始地址符號bss_start寫入r2寄存器,當r0r1相等時表示加載地址和重定位地址為同一地址,所以不會進行重定位的相關操作,而是跳轉到清理bss段為C代碼的運行建立環境:如果r0r1不相等,就表示加載地址與實際運行地址不同,所以需要進行重定位以保證代碼在運行時不會出現錯誤。所謂的重定位就是將加載地址處的代碼拷貝一份到實際運行位置處,所以在.S代碼的copy_loop就是將代碼從加載地址處拷貝到實際運行處。在清理完bssC代碼建立好運行環境后通過ldr pc, =led_flash ,ldr長跳轉到C代碼的流水燈程序中。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

威海市| 扎囊县| 西丰县| 新干县| 平乐县| 宜州市| 册亨县| 岫岩| 驻马店市| 泰和县| 南宫市| 亚东县| 湖口县| 商都县| 青海省| 旬邑县| 茌平县| 花莲市| 鄂托克前旗| 古田县| 青海省| 乌拉特后旗| 阳东县| 赣州市| 巴楚县| 财经| 莱西市| 静宁县| 高雄市| 宝应县| 滕州市| 揭阳市| 贵港市| 自贡市| 道孚县| 剑河县| 永福县| 永康市| 阿巴嘎旗| 福海县| 周至县|