Menu

#3 boolean return value only returns false

open
nobody
None
5
2004-06-06
2004-06-06
Anonymous
No

static boolean ggetBit(int value, int bit) {
return (value & (1<<bit)) !=0;
}

produces the following code

Usart_ggetBit_II_Z
;---- Usart.java[23]: return (value & (1<<bit))
!=0;
movf Usart_ggetBit_II_Z_loc+1,0
btfsc _STATUS,_Z
goto Usart_ggetBit_II_Z_3_end2
movwf 4
movlw 1
movwf _ACC
Usart_ggetBit_II_Z_3_loop
bcf _STATUS,_C
rlf _ACC,1
decfsz 4,1
goto Usart_ggetBit_II_Z_3_loop
Usart_ggetBit_II_Z_3_end1
movf _ACC,0
pagesel Usart_ggetBit_II_Z_3_end
goto Usart_ggetBit_II_Z_3_end
Usart_ggetBit_II_Z_3_end2
movlw 1
Usart_ggetBit_II_Z_3_end
andwf Usart_ggetBit_II_Z_loc+0,0
iorlw 0
btfsc _STATUS,_Z ; if eq
goto Usart_ggetBit_II_Z_12
pagesel Usart_ggetBit_II_Z_13
goto Usart_ggetBit_II_Z_13
Usart_ggetBit_II_Z_12
Usart_ggetBit_II_Z_13
movlw 0
banksel _ACC
return

the last five lines should be
Usart_ggetBit_II_Z_12
movlw 1
banksel _ACC
return
Usart_ggetBit_II_Z_13
movlw 0
banksel _ACC
return

or along that line to function correctly

Discussion