This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

CARM 1.3 bug?

I've port C source from C51 to CARM
but CARM compiler seem has bug in comparison.

#include <lpc210x.h>

//DKARM 1.3h
//----------
//AA MACRO ASSEMBLER V0.10a
//CA ARM COMPILER V0.10a
//LA ARM LINKER/LOCATER V0.10c

unsigned char test(void) {
    return(0xEE);
}

void main(void) {
    unsigned char K;
    K=test();
    if ((K&0x0F)!=0x0F) {
        //0xEE&0x0F=>0x0E
        //0x0E!=0x0F
        //but this block don't enter
        while (1);
    }
    else {
        while (1);
    }
}

Parents
  • while (1) is just simple code to show where block are entered to executed.

    Ithe above case, if you see the disassembly windows while debugging.
    You will see comparison of R0 (0xEE) with R1 (0x0F), thats seem the CARM don't mask significant bits (3:0) before compare.

    Thanks.

Reply
  • while (1) is just simple code to show where block are entered to executed.

    Ithe above case, if you see the disassembly windows while debugging.
    You will see comparison of R0 (0xEE) with R1 (0x0F), thats seem the CARM don't mask significant bits (3:0) before compare.

    Thanks.

Children