diff options
Diffstat (limited to 'src/emu/cpu/ssem/ssemdasm.c')
-rw-r--r-- | src/emu/cpu/ssem/ssemdasm.c | 106 |
1 files changed, 53 insertions, 53 deletions
diff --git a/src/emu/cpu/ssem/ssemdasm.c b/src/emu/cpu/ssem/ssemdasm.c index aa9c7d3c333..4b746ac0fce 100644 --- a/src/emu/cpu/ssem/ssemdasm.c +++ b/src/emu/cpu/ssem/ssemdasm.c @@ -10,76 +10,76 @@ static char *output; static void ATTR_PRINTF(1,2) print(const char *fmt, ...) { - va_list vl; + va_list vl; - va_start(vl, fmt); - output += vsprintf(output, fmt, vl); - va_end(vl); + va_start(vl, fmt); + output += vsprintf(output, fmt, vl); + va_end(vl); } INLINE UINT32 reverse(UINT32 v) { - // Taken from http://www-graphics.stanford.edu/~seander/bithacks.html#ReverseParallel - // swap odd and even bits - v = ((v >> 1) & 0x55555555) | ((v & 0x55555555) << 1); - // swap consecutive pairs - v = ((v >> 2) & 0x33333333) | ((v & 0x33333333) << 2); - // swap nibbles ... - v = ((v >> 4) & 0x0F0F0F0F) | ((v & 0x0F0F0F0F) << 4); - // swap bytes - v = ((v >> 8) & 0x00FF00FF) | ((v & 0x00FF00FF) << 8); - // swap 2-byte long pairs - v = ( v >> 16 ) | ( v << 16); + // Taken from http://www-graphics.stanford.edu/~seander/bithacks.html#ReverseParallel + // swap odd and even bits + v = ((v >> 1) & 0x55555555) | ((v & 0x55555555) << 1); + // swap consecutive pairs + v = ((v >> 2) & 0x33333333) | ((v & 0x33333333) << 2); + // swap nibbles ... + v = ((v >> 4) & 0x0F0F0F0F) | ((v & 0x0F0F0F0F) << 4); + // swap bytes + v = ((v >> 8) & 0x00FF00FF) | ((v & 0x00FF00FF) << 8); + // swap 2-byte long pairs + v = ( v >> 16 ) | ( v << 16); - return v; + return v; } offs_t ssem_dasm_one(char *buffer, offs_t pc, UINT32 op) { - UINT8 instr = (reverse(op) >> 13) & 7; - UINT8 addr = reverse(op) & 0x1f; + UINT8 instr = (reverse(op) >> 13) & 7; + UINT8 addr = reverse(op) & 0x1f; - output = buffer; + output = buffer; - switch (instr) - { - case 0: // JMP S - print("JMP %d", addr); - break; - case 1: // JRP S - print("JRP %d", addr); - break; - case 2: // LDN S - print("LDN %d", addr); - break; - case 3: // STO S - print("STO %d", addr); - break; - case 4: // SUB S - case 5: - print("SUB %d", addr); - break; - case 6: // CMP - print("CMP"); - break; - case 7: // STP - print("STP"); - break; - default: - print("???"); - break; - } + switch (instr) + { + case 0: // JMP S + print("JMP %d", addr); + break; + case 1: // JRP S + print("JRP %d", addr); + break; + case 2: // LDN S + print("LDN %d", addr); + break; + case 3: // STO S + print("STO %d", addr); + break; + case 4: // SUB S + case 5: + print("SUB %d", addr); + break; + case 6: // CMP + print("CMP"); + break; + case 7: // STP + print("STP"); + break; + default: + print("???"); + break; + } - return 4 | DASMFLAG_SUPPORTED; + return 4 | DASMFLAG_SUPPORTED; } /*****************************************************************************/ CPU_DISASSEMBLE( ssem ) { - UINT32 op = (*(UINT8 *)(opram + 0) << 24) | - (*(UINT8 *)(opram + 1) << 16) | - (*(UINT8 *)(opram + 2) << 8) | - (*(UINT8 *)(opram + 3) << 0); - return ssem_dasm_one(buffer, pc, op); + UINT32 op = (*(UINT8 *)(opram + 0) << 24) | + (*(UINT8 *)(opram + 1) << 16) | + (*(UINT8 *)(opram + 2) << 8) | + (*(UINT8 *)(opram + 3) << 0); + return ssem_dasm_one(buffer, pc, op); } |