2011年9月15日木曜日

ARM レジスタダンプ

ARM のレジスタの内容を regs[16] にダンプする関数 dumpregs。


[dumpregs.s]

.text
        .global dumpregs


dumpregs:
        stmfd sp!, {r0}


        ldr r0, clabel
        add r0, r0, #4
        stmea r0!, {r1-r15}


        ldmfd sp!, {r0}


        ldr r1, clabel
        stmea r1!, {r0}


        bx lr




clabel: .word regs


C コードからは、
unsigned int regs[16];
extern int dumpregs();
で宣言しておいて、dumpregs() を呼び出すとその時点でのレジスタの内容が
regs[16] にコピーされる。

コンパイルは、
$ arm-linux-gnueabi-gcc sample.c dumpregs.s

0 件のコメント:

コメントを投稿