; By Chris Aubut (psyba.ppc@gmail.com) ; Remove .txt suffix ; Make with "gcc -o hexDump hexDump.S" ; Run with "hexDump < fileToHexDump" #define r_buf r10 #define r_out r11 #define r_end r12 .align 2 .data buf: .byte 0x00 out: .ascii "0x00 " end: .ascii "\n" .align 2 .text .globl _main _main: ; preload addresses lis r_buf, hi16(buf) ori r_buf, r_buf, lo16(buf) lis r_out, hi16(out) ori r_out, r_out, lo16(out) lis r_end, hi16(end) ori r_end, r_end, lo16(end) _loop: ; read in next byte li r0, 3 li r3, 0 addi r4, r_buf, 0 li r5, 1 sc nop ; test for last byte addi r4, r_buf, 0 lbz r6, 0(r4) cmpi cr7, r3, 0 beq cr7, _finish ; digit 1 to ascii srwi r6, r6, 4 cmpi cr7, r6, 10 blt cr7, _digit1 addi r6, r6, 39 _digit1: addi r6, r6, 48 addi r4, r_out, 0 stb r6, 2(r4) ; digit 2 to ascii addi r4, r_buf, 0 lbz r6, 0(r4) andi. r6, r6, 0x000F cmpi cr7, r6, 10 blt cr7, _digit2 addi r6, r6, 39 _digit2: addi r6, r6, 48 addi r4, r_out, 0 stb r6, 3(r4) ; print li r0, 4 li r3, 1 addi r4, r_out, 0 li r5, 5 sc nop b _loop _finish: li r0, 4 li r3, 1 addi r4, r_end, 0 li r5, 1 sc nop blr