| 2 |
$Id$ |
$Id$ |
| 3 |
*/ |
*/ |
| 4 |
|
|
| 5 |
|
#include "exception.h" |
| 6 |
#include "despasm.h" |
#include "despasm.h" |
| 7 |
#include <stdio.h> |
#include <stdio.h> |
| 8 |
|
|
| 95 |
for (unsigned long i = 0; i < spasm_code.size(); i++) |
for (unsigned long i = 0; i < spasm_code.size(); i++) |
| 96 |
{ |
{ |
| 97 |
adres = i * 4; |
adres = i * 4; |
| 98 |
rozkaz = bit_word(spasm_code[i]); |
try { |
| 99 |
|
rozkaz = bit_word(spasm_code[i]); |
| 100 |
|
} catch ( ex<vmachine> exc) { |
| 101 |
|
throw ex<despasm> ("despasm::despasm : " + exc.error_msg()); |
| 102 |
|
} |
| 103 |
|
|
| 104 |
memset(bufor, 0, DEASM_BUFOR); |
memset(bufor, 0, DEASM_BUFOR); |
| 105 |
linia = ""; |
linia = ""; |
| 120 |
sprintf(bufor, SETHI_FORMAT, (int) rozwinZnak(rozkaz.imm22, 22)); |
sprintf(bufor, SETHI_FORMAT, (int) rozwinZnak(rozkaz.imm22, 22)); |
| 121 |
linia += (string) bufor + ", " + rejestr(rozkaz.dst, typ_reg); |
linia += (string) bufor + ", " + rejestr(rozkaz.dst, typ_reg); |
| 122 |
break; |
break; |
| 123 |
|
|
| 124 |
case (instr_word::branch_format): |
case (instr_word::branch_format): |
| 125 |
sprintf(bufor, ADRES_FORMAT, adres + 4 * rozwinZnak(rozkaz.dsp22, 22)); |
sprintf(bufor, ADRES_FORMAT, adres + 4 * rozwinZnak(rozkaz.dsp22, 22)); |
| 126 |
linia += bufor; |
linia += bufor; |
| 127 |
break; |
break; |
| 128 |
|
|
| 129 |
case (instr_word::primary_reg): |
case (instr_word::primary_reg): |
| 130 |
regreg += (string) "[ " + rejestr(rozkaz.src1,typ_reg) + |
regreg += (string) "[ " + rejestr(rozkaz.src1,typ_reg) + |
| 131 |
(string) " + " + rejestr(rozkaz.src2,typ_reg) + (string) " ]"; |
(string) " + " + rejestr(rozkaz.src2,typ_reg) + (string) " ]"; |