The below code is generating wrong asm instruction. All is because
the statment ("c") is x == y; instead of x=y;
I think, that if compiler doesn't notice above statement as a correct one
should throw syntax error.
Compilation to the final output is misleading, and doesn't help debuging
robert
455 if(usart0_tx_buffer[usart0_tx_extract_idx] == '~'){
- 0x864e <usart0XmtIsr+16>: mov &0x024e,r15 ;0x024e
-> usart0_tx_extract_idx
- 0x8652 <usart0XmtIsr+20>: add #572, r15 ;#572
-> #0x023c ->usart0_tx_buffer
- 0x8656 <usart0XmtIsr+24>: cmp.b #126, 0(r15) ;#126
-> #0x007e ->'~' =
compare instr 455
- 0x865c <usart0XmtIsr+30>: jnz $+8 ;jump
to 0x8664 which out of
consideration
456 usart0_tx_buffer[usart0_tx_extract_idx] == '\n';this
line is not noticed
by compiler
457 AppStatus = WAITING_USART0_RREPORT;
0x865e <usart0XmtIsr+32>: mov.b #2, &0x0204 ;0x0204
= AppStatus , #2 =
WAITING_USART0_RREPORT
- 0x8662 <usart0XmtIsr+36>: jmp $+22 ;abs
dst addr 0x8678
458
459 }else if(usart0_tx_buffer[usart0_tx_extract_idx] ==
'\x7D'){
0x8664 <usart0XmtIsr+38>: mov &0x024e,r15 ;src
addr 0x024e
- 0x8668 <usart0XmtIsr+42>: add #572, r15
;#0x023c
- 0x866c <usart0XmtIsr+46>: cmp.b #125, 0(r15)
;#0x007d
- 0x8672 <usart0XmtIsr+52>: jnz $+6 ;abs
dst addr 0x8678
460 usart0_tx_buffer[usart0_tx_extract_idx] == '\n';
461 AppStatus = INIT_PRODRP;
- 0x8674 <usart0XmtIsr+54>: mov.b #4, &0x0204 ;subst
r2 with As==10
462 }
463 StartQTimer(usart0_tx_buffer[usart0_tx_extract_idx++]);
- 0x8678 <usart0XmtIsr+58>: mov &0x024e,r15 ;src
addr 0x024e
-