📄 pmonexmp
字号:
Example of using PMON for Assembly-level debuggingExample of using PMON for Assembly-level debuggingThis page shows an annotated example of using PMON todownload, and then debug a sample application.Load the application program l4003.rec (bubble sort).PMON loadDownloading from ethernet, ^C to abortEntry address is 80000200total = 0x1280 bytesDisassemble the program.PMON l _start 0c0001ba jal CpuInit # 0x800006e8 _start+0x4 00000000 nop _start+0x8 3c01a000 lui at,0xa000 # 40960 _start+0xc 02018025 or s0,s0,at _start+0x10 0200f809 jalr s0 _start+0x14 24040003 addiu a0,zero,0x3 _start+0x18 0200f809 jalr s0 _start+0x1c 24040004 addiu a0,zero,0x4 _start+0x20 0c0002a4 jal clrbss # 0x80000a90 _start+0x24 00000000 nopmore... qGo from here to 'main'. Go must only be used once, from then onyou must use the 'c' (continue) command.PMON g . main main 27bdffe0 addiu sp,sp,0xffe0 # -32Disassemble but only show calls.PMON l -c main+0xc 0c00014f jal _puts # 0x8000053c main+0x14 0c0000bf jal init # 0x800002fc main+0x1c 0c0000f8 jal sort # 0x800003e0 main+0x24 0c00014f jal _puts # 0x8000053c init+0x14 0c000140 jal malloc # 0x80000500 init+0x74 0c0000e8 jal insert # 0x800003a0 sort+0x58 0c00011e jal swap # 0x80000478 _puts+0x38 0c00018b jal sio_putc # 0x8000062c _puts+0x4c 0c00018b jal sio_putc # 0x8000062c sio_putc+0x14 0c000170 jal sio_init # 0x800005c0more... qContinue until the function init.PMON c init init 27bdffe0 addiu sp,sp,0xffe0 # -32Continue until the address in register ra, i.e., until this function returns.PMON c @ra main+0x1c 0c0000f8 jal sort # 0x800003e0Single step into the function sort.PMON t sort 8f8e8028 lw t6,-32728(gp) # 0xffff8028Disassemble.PMON l sort 8f8e8028 lw t6,-32728(gp) # 0xffff8028 sort+0x4 27bdffd8 addiu sp,sp,0xffd8 # -40 sort+0x8 11c0001f beq t6,zero,sort+0x88 # 0x80000468 sort+0xc afbf0014 sw ra,20(sp) # 0x14 sort+0x10 8f8f8028 lw t7,-32728(gp) # 0xffff8028 sort+0x14 afa00024 sw zero,36(sp) # 0x24 sort+0x18 afaf0020 sw t7,32(sp) # 0x20 sort+0x1c 8fb80020 lw t8,32(sp) # 0x20 sort+0x20 00000000 nop sort+0x24 8f190000 lw t9,0(t8)more... qSingle step.PMON t sort+0x4 27bdffd8 addiu sp,sp,0xffd8 # -40Single step by pressing the return key (repeat last command).PMON sort+0x8 11c0001f beq t6,zero,sort+0x88 # 0x80000468PMON sort+0x10 8f8f8028 lw t7,-32728(gp) # 0xffff8028PMON sort+0x14 afa00024 sw zero,36(sp) # 0x24PMON sort+0x18 afaf0020 sw t7,32(sp) # 0x20PMON sort+0x1c 8fb80020 lw t8,32(sp) # 0x20PMON sort+0x20 00000000 nopPMON sort+0x24 8f190000 lw t9,0(t8)PMON sort+0x28 00000000 nopDisassemble.PMON l sort+0x28 00000000 nop sort+0x2c 13200012 beq t9,zero,sort+0x78 # 0x80000458 sort+0x30 afb9001c sw t9,28(sp) # 0x1c sort+0x34 8fa80020 lw t0,32(sp) # 0x20 sort+0x38 8faa001c lw t2,28(sp) # 0x1c sort+0x3c 9509000a lhu t1,10(t0) # 0xa sort+0x40 954b000a lhu t3,10(t2) # 0xa sort+0x44 00000000 nop sort+0x48 0169082b sltu at,t3,t1 sort+0x4c 10200008 beq at,zero,sort+0x70 # 0x80000450more... qDisassemble calls only.PMON l -c sort+0x58 0c00011e jal swap # 0x80000478 _puts+0x38 0c00018b jal sio_putc # 0x8000062c _puts+0x4c 0c00018b jal sio_putc # 0x8000062c sio_putc+0x14 0c000170 jal sio_init # 0x800005c0 CpuInit+0x4 0c0000a8 jal getmachtype # 0x800002a0 CpuInit+0x38 0100f809 jalr t0searching.. ^C-break! sort+0x28 00000000 nopContinue until sort+58.PMON c sort+58 sort+0x58 0c00011e jal swap # 0x80000478Single step over the function swap.PMON to sort+0x60 240c0001 addiu t4,zero,0x1Continue until the function swap.PMON c swap swap 8c8e0004 lw t6,4(a0)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -