N.B. This assumbes that b/e are 4 byte aligned (otherwise endianness is broken)
| 196 | // |
| 197 | //***************************************************************************** |
| 198 | void Dump_MemoryRange(FILE * fh, u32 address_offset, const u32 * b, const u32 * e) |
| 199 | { |
| 200 | u32 address( address_offset ); |
| 201 | const u32 * p( b ); |
| 202 | while( p < e ) |
| 203 | { |
| 204 | fprintf(fh, "0x%08x: %08x %08x %08x %08x ", address, p[0], p[1], p[2], p[3]); |
| 205 | |
| 206 | const u8 * p8( reinterpret_cast< const u8 * >( p ) ); |
| 207 | for (u32 i = 0; i < 16; i++) |
| 208 | { |
| 209 | u8 c( p8[i ^ U8_TWIDDLE] ); |
| 210 | if (c >= 32 && c < 128) |
| 211 | fprintf(fh, "%c", c); |
| 212 | else |
| 213 | fprintf(fh, "."); |
| 214 | |
| 215 | if ((i%4)==3) |
| 216 | fprintf(fh, " "); |
| 217 | } |
| 218 | fprintf(fh, "\n"); |
| 219 | |
| 220 | address += 16; |
| 221 | p += 4; |
| 222 | } |
| 223 | } |
| 224 | |
| 225 | void Dump_DisassembleRSPRange(FILE * fh, u32 address_offset, const OpCode * b, const OpCode * e) |
| 226 | { |
no outgoing calls
no test coverage detected