亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

發布時間: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

建瓯市| 香河县| 临清市| 大理市| 文昌市| 汕头市| 增城市| 台中市| 开阳县| 安溪县| 康马县| 塘沽区| 永济市| 青岛市| 山丹县| 洪洞县| 分宜县| 万荣县| 宣武区| 双鸭山市| 永宁县| 博爱县| 政和县| 康平县| 河间市| 金秀| 东乡族自治县| 普陀区| 伽师县| 德庆县| 淮南市| 宜兰市| 社旗县| 社会| 郁南县| 白山市| 托克托县| 黑水县| 福州市| 德格县| 堆龙德庆县|