Issues with Comparing the Value of a RAM Variable in C – KBA96489

Version 1
    Version: **

     

    Question:

    Compare instructions do not work correctly with the variable value in C. The RAM variable is defined with the #define directive, such as this: #define StackTop (* (int*) 0x7fe). It is possible to read/modify the value of the variable in the C code correctly.

     

    Answer:

    Answer: This is a known ImageCraft compiler issue.

    If the variable is defined as #define StackTop (* (int*) 0x7fe), modification and read operations work correctly as follows:

    Modification:

    StackTop = 0x1234;

    Variable read:

    int i;

    i = StackTop; // i = 0x1234;

    However, the following compare instruction does not operate correctly:

    If (StackTop == 0x1234) {}

    To resolve the issue, see the Knowledge Base article: Allocation of Variables at Absolute Address in RAM