37 #define MONSREG traceOut << (string)(*(core->status)) 42 #define INDEX_FROM_BITMASK(mask) \ 43 ( (mask) == 0x01 ? 0 \ 44 : (mask) == 0x02 ? 1 \ 45 : (mask) == 0x04 ? 2 \ 46 : (mask) == 0x08 ? 3 \ 47 : (mask) == 0x10 ? 4 \ 48 : (mask) == 0x20 ? 5 \ 49 : (mask) == 0x40 ? 6 \ 50 : (mask) == 0x80 ? 7 \ 51 : abort_in_expression() ) 60 traceOut <<
"ADC R" << (int)R1 <<
", R" << (
int)R2 <<
" ";
61 int ret = this->operator()();
67 traceOut <<
"ADD R" << (int)R1 <<
", R" << (
int)R2 <<
" ";
68 int ret = this->operator()();
74 traceOut <<
"ADIW R" << (int)Rl <<
", " << (
int)K <<
" ";
75 int ret = this->operator()();
81 traceOut <<
"AND R" << (int)R1 <<
", R" << (
int)R2 <<
" ";
82 int ret=this->operator()();
89 int ret=this->operator()();
95 traceOut <<
"ASR R" << (int)R1 <<
" ";
96 int ret = this->operator()();
114 int ret = this->operator()();
120 traceOut <<
"BLD R" << (int)R1 <<
", " << (
int)Kbit <<
" ";
121 int ret = this->operator()();
138 <<
" ->" <<
HexShort(offset * 2) <<
" ";
139 string sym(core->Flash->GetSymbolAtAddress(core->PC+1+offset));
140 int ret = this->operator()();
143 for(
int len = sym.length(); len < 30; len++)
162 <<
" ->" <<
HexShort(offset * 2) <<
" ";
163 string sym(core->Flash->GetSymbolAtAddress(core->PC+1+offset));
164 int ret=this->operator()();
167 for(
int len = sym.length(); len < 30; len++)
186 int ret = this->operator()();
192 traceOut <<
"BST R" << (int)R1 <<
", " << (
int)Kbit <<
" ";
193 int ret = this->operator()();
199 word K_lsb = core->Flash->ReadMemWord((core->PC + 1) * 2);
200 int k = (KH << 16) | K_lsb;
201 traceOut <<
"CALL 0x" << hex << k * 2 << dec <<
" ";
202 int ret = this->operator()();
208 int ret = this->operator()();
213 traceOut <<
"COM R" << (int)R1 <<
" ";
214 int ret = this->operator()();
220 traceOut <<
"CP R" << (int)R1 <<
", R" << (
int)R2 <<
" ";
221 int ret = this->operator()();
227 traceOut <<
"CPC R" << (int)R1 <<
", R" << (
int)R2 <<
" ";
228 int ret = this->operator()();
235 int ret = this->operator()();
241 traceOut <<
"CPSE R" << (int)R1 <<
", R" << (
int)R2 <<
" ";
242 int ret = this->operator()();
247 traceOut <<
"DEC R" << (int)R1 <<
" ";
248 int ret = this->operator()();
255 int ret = this->operator()();
261 int ret = this->operator()();
266 traceOut <<
"ELPM R" << (int)R1 <<
", Z " ;
267 int ret = this->operator()();
269 unsigned char rampz = 0;
270 if(core->rampz != NULL)
271 rampz = core->rampz->GetRegVal();
272 unsigned int Z = (rampz << 16) + core->GetRegZ();
274 traceOut <<
" Flash[0x" << hex << Z << dec <<
"] ";
280 traceOut <<
"ELPM R" << (int)R1 <<
", Z+ ";
281 unsigned char rampz = 0;
282 if(core->rampz != NULL)
283 rampz = core->rampz->GetRegVal();
284 unsigned int Z = (rampz << 16) + core->GetRegZ();
285 int ret = this->operator()();
287 traceOut <<
" Flash[0x" << hex << Z << dec <<
"] ";
294 int ret = this->operator()();
296 unsigned char rampz = 0;
297 if(core->rampz != NULL)
298 rampz = core->rampz->GetRegVal();
299 unsigned int Z = (rampz << 16) + core->GetRegZ();
301 traceOut <<
" Flash[0x" << hex << Z << dec <<
"] ";
307 traceOut <<
"EOR R" << (int)R1 <<
", R" << (
int)R2 <<
" ";
308 int ret = this->operator()();
315 int ret = this->operator()();
320 traceOut <<
"FMUL R" << (int)Rd <<
", R" << (
int)Rr <<
" ";
321 int ret = this->operator()();
327 traceOut <<
"FMULS R" << (int)Rd <<
", R" << (
int)Rr <<
" ";
328 int ret = this->operator()();
334 traceOut <<
"FMULSU R" << (int)Rd <<
", R" << (
int)Rr <<
" ";
335 int ret = this->operator()();
342 int ret = this->operator()();
348 int ret = this->operator()();
354 int ret = this->operator()();
359 traceOut <<
"INC R" << (int)R1 <<
" ";
360 int ret = this->operator()();
367 word offset = core->Flash->ReadMemWord((core->PC + 1) * 2);
368 int ret = this->operator()();
369 traceOut << hex << 2 * offset << dec <<
" ";
371 string sym(core->Flash->GetSymbolAtAddress(offset));
373 for(
int len = sym.length(); len < 30; len++)
380 traceOut <<
"LDD R" << (int)Rd <<
", Y+" << (
int)K <<
" ";
381 int ret = this->operator()();
386 traceOut <<
"LDD R" << (int)Rd <<
", Z+" << (
int)K <<
" ";
387 int ret = this->operator()();
393 int ret = this->operator()();
398 word offset = core->Flash->ReadMemWord((core->PC + 1) * 2);
399 traceOut <<
"LDS R" << (int)R1 <<
", " << hex <<
"0x" << offset << dec <<
" ";
400 int ret = this->operator()();
405 traceOut <<
"LD R" << (int)Rd <<
", X ";
406 int ret = this->operator()();
411 traceOut <<
"LD R" << (int)Rd <<
", -X ";
412 int ret = this->operator()();
417 traceOut <<
"LD R" << (int)Rd <<
", X+ ";
418 int ret = this->operator()();
423 traceOut <<
"LD R" << (int)Rd <<
", -Y ";
424 int ret = this->operator()();
429 traceOut <<
"LD R" << (int)Rd <<
", Y+ " ;
430 int ret = this->operator()();
435 traceOut <<
"LD R" << (int)Rd <<
", Z+ ";
436 int ret = this->operator()();
441 traceOut <<
"LD R" << (int)Rd <<
", -Z";
442 int ret = this->operator()();
447 traceOut <<
"LPM R" << (int)Rd <<
", Z ";
448 int ret = this->operator()();
451 unsigned int Z = core->GetRegZ();
452 string sym(core->Flash->GetSymbolAtAddress(Z));
453 traceOut <<
"FLASH[" << hex << Z << dec <<
"," << sym <<
"] ";
460 int ret = this->operator()();
463 unsigned int Z = core->GetRegZ();
464 string sym(core->Flash->GetSymbolAtAddress(Z));
465 traceOut <<
"FLASH[" << hex << Z << dec <<
"," << sym <<
"] ";
471 traceOut <<
"LPM R" << (int)Rd <<
", Z+ " ;
473 unsigned int Z = core->GetRegZ();
474 int ret = this->operator()();
476 string sym(core->Flash->GetSymbolAtAddress(Z));
477 traceOut <<
"FLASH[" << hex << Z << dec <<
"," << sym <<
"] ";
482 traceOut <<
"LSR R" << (int)Rd <<
" ";
483 int ret = this->operator()();
489 traceOut <<
"MOV R" << (int)R1 <<
", R" << (
int)R2 <<
" ";
490 int ret = this->operator()();
495 traceOut <<
"MOVW R" << (int)Rd <<
", R" << (
int)Rs <<
" ";
496 int ret = this->operator()();
501 traceOut <<
"MUL R" << (int)Rd <<
", R" << (
int)Rr <<
" ";
502 int ret = this->operator()();
508 traceOut <<
"MULS R" << (int)Rd <<
", R" << (
int)Rr <<
" ";
509 int ret = this->operator()();
515 traceOut <<
"MULSU R" << (int)Rd <<
", R" << (
int)Rr <<
" ";
516 int ret = this->operator()();
522 traceOut <<
"NEG R" << (int)Rd <<
" ";
523 int ret = this->operator()();
530 int ret = this->operator()();
535 traceOut <<
"OR R" << (int)Rd <<
", R" << (
int)Rr <<
" ";
536 int ret = this->operator()();
543 int ret = this->operator()();
550 int ret = this->operator()();
555 traceOut <<
"POP R" << (int)R1 <<
" ";
556 int ret = this->operator()();
561 traceOut <<
"PUSH R" << (int)R1 <<
" ";
562 int ret = this->operator()();
567 traceOut <<
"RCALL " << hex << ((core->PC + K + 1) << 1) << dec <<
" ";
568 int ret = this->operator()();
574 int ret = this->operator()();
580 int ret = this->operator()();
585 traceOut <<
"RJMP " << hex << ((core->PC + K + 1) << 1) << dec <<
" ";
586 int ret = this->operator()();
591 traceOut <<
"ROR R" << (int)R1 <<
" ";
592 int ret = this->operator()();
598 traceOut <<
"SBC R" << (int)R1 <<
", R" << (
int)R2 <<
" ";
599 int ret = this->operator()();
606 int ret = this->operator()();
613 int ret = this->operator()();
619 int ret = this->operator()();
625 int ret = this->operator()();
631 int ret=this->operator()();
637 traceOut <<
"SBRC R" << (int)R1 <<
", " << (
int)Kbit <<
" ";
638 int ret = this->operator()();
643 traceOut <<
"SBRS R" << (int)R1 <<
", " << (
int)Kbit <<
" ";
644 int ret = this->operator()();
650 int ret = this->operator()();
656 int ret = this->operator()();
661 traceOut <<
"STD Y+" << (int)K <<
", R" << (
int)R1 <<
" ";
662 int ret = this->operator()();
667 traceOut <<
"STD Z+" << (int)K <<
", R" << (
int)R1 <<
" ";
668 int ret = this->operator()();
673 word offset = core->Flash->ReadMemWord((core->PC + 1) * 2);
674 traceOut <<
"STS " <<
"0x" << hex << offset << dec <<
", R" << (int)R1 <<
" ";
675 int ret = this->operator()();
680 traceOut <<
"ST X, R" << (int)R1 <<
" ";
681 int ret = this->operator()();
686 traceOut <<
"ST -X, R" << (int)R1 <<
" ";
687 int ret = this->operator()();
692 traceOut <<
"ST X+, R" << (int)R1 <<
" ";
693 int ret = this->operator()();
698 traceOut <<
"ST -Y, R" << (int)R1 <<
" ";
699 int ret = this->operator()();
704 traceOut <<
"ST Y+, R" << (int)R1 <<
" ";
705 int ret = this->operator()();
710 traceOut <<
"ST -Z, R" << (int)R1 <<
" ";
711 int ret = this->operator()();
716 traceOut <<
"ST Z+, R" << (int)R1 <<
" ";
717 int ret = this->operator()();
722 traceOut <<
"SUB R" << (int)R1 <<
", R" << (
int)R2 <<
" ";
723 int ret = this->operator()();
730 int ret = this->operator()();
736 traceOut <<
"SWAP R" << (int)R1 <<
" ";
737 int ret = this->operator()();
743 int ret = this->operator()();
749 int ret = this->operator()();
754 traceOut <<
"Invalid Instruction! ";
755 int ret = this->operator()();
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int abort_in_expression()
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
#define INDEX_FROM_BITMASK(mask)
Calculate index from mask so that (1<<index)==mask. Crash on incorrect values.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
const char * branch_opcodes_clear[8]
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
const char * opcodes_bset[8]
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
const char * opcodes_bclr[8]
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
const char * branch_opcodes_set[8]
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.
int Trace()
Performs instruction and write out instruction mnemonic for trace.