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) " ]"; |