乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      ARM匯編指令調(diào)試方法

       昵稱10504424 2015-10-10

      學(xué)習(xí)ARM匯編時(shí),少不了對(duì)ARM匯編指令的調(diào)試。作為支持多語言的調(diào)試器,gdb自然是較好的選擇。調(diào)試器工作時(shí),一般通過修改代碼段的內(nèi)容構(gòu)造trap軟中斷指令,實(shí)現(xiàn)程序的暫停和程序執(zhí)行狀態(tài)的監(jiān)控。為了在x86平臺(tái)上執(zhí)行ARM指令,可以使用qemu模擬器執(zhí)行ARM匯編指令。

      一、準(zhǔn)備ARM匯編程序

      首先,我們構(gòu)造一段簡單的ARM匯編程序作為測(cè)試代碼main.s。

      .globl _start
      _start:
      	mov R0,#0
      	swi	0x00900001

      以上匯編指令完成了0號(hào)系統(tǒng)調(diào)用exit的調(diào)用。mov指令將系統(tǒng)調(diào)用號(hào)傳入寄存器R0,然后使用0x00900001軟中斷陷入系統(tǒng)調(diào)用。

      為了運(yùn)行ARM匯編代碼,需要使用交叉編譯器arm-linux-gcc對(duì)ARM匯編代碼進(jìn)行編譯。下載交叉編譯器安裝完畢后,對(duì)ARM匯編代碼進(jìn)行編譯。

      arm-linux-gcc main.s -o main -nostdlib

      編譯選項(xiàng)“-nostdlib”表示不使用任何運(yùn)行時(shí)庫文件,編譯生成的可執(zhí)行文件main只能在ARM體系結(jié)構(gòu)的系統(tǒng)上運(yùn)行。

      二、編譯安裝qemu模擬器

      為了x86的Linux系統(tǒng)內(nèi)運(yùn)行ARM體系結(jié)構(gòu)的可執(zhí)行程序,需要安裝qemu模擬器。

      首先下載qemu源碼,然后保證系統(tǒng)已經(jīng)安裝了flex和bison。

      編譯安裝qemu。

      ./configure --prefix=/usr
      sudo make && make install

      然后使用qemu的ARM模擬器執(zhí)行ARM程序。

      qemu ./main

      三、編譯安裝arm-gdb

      為了調(diào)試ARM程序,需要使用gdb的源碼編譯生成arm-gdb。

      首先下載gdb源代碼,編譯安裝。

      ./configure --target=arm-linux --prefix=/usr/local
      sudo make && make install

      為了和系統(tǒng)的gdb避免沖突,我們將gdb的安裝目錄安裝到/usr/local,然后建立軟鏈接即可。

      ln -s /usr/bin/arm-gdb /usr/local/gdb/gdb

      之后便可以使用arm-gdb命令調(diào)試ARM程序了。

      四、調(diào)試ARM程序

      首先使用qemu打開遠(yuǎn)程調(diào)試端口。

      qemu-arm -g 1024 ./main

      然后導(dǎo)出環(huán)境變量QEMU_GDB。

      export QEMU_GDB=/usr/local/gdb

      最后,進(jìn)入gdb調(diào)試。

      arm-gdb ./main

      進(jìn)入arm-gdb后,首先連接遠(yuǎn)程調(diào)試端口。

      (gdb) target remote localhost:1024

      然后使用gdb常用的調(diào)試命令調(diào)試代碼即可。

      (gdb) disassemble			// 查看反匯編
      (gdb) x /8xw 0x0000808e		// 查看內(nèi)存
      (gdb) info register			// 查看寄存器
      (gdb) continue				// 繼續(xù)執(zhí)行
      (gdb) stepi					// 匯編級(jí)逐過程
      (gdb) nexti					// 匯編級(jí)逐語句

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多