This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Improper compilation of constant 0xFFFFFFFF

Compiler Options: -ss -pdr -pdv -os -fr"$(Proj_dir)\spi" -fs"$(Proj_dir)\spi" -i"$(Proj_dir)\include" -d"UBL_SPI" -d"USE_IN_ROM" -d"BOOT" -me -mv5e --abi=ti_arm9_abi --symdebug:none

Linker Options: --abi=ti_arm9_abi -m"$(Proj_dir)\spi\ubl-spi.map" -o"$(Proj_dir)\spi\ubl-spi.out" -x

I'm using CCS 3.3.83.19 to compile some ARM code. Why does the 0xffffffff in the source code of (1) become #0 in the .asm file? gpio0 is declared as a 32-bit  unsigned int *.

1:From the src .c file:

;  84 | *(gpio0 + 7) = (unsigned int) 0xffffffff;

From the associated .asm file:

        LDR       V9, [SP, #4]          ; |84|
        MVN       A1, #0                ; |84|
        STR       A1, [V9, #28]         ; |84|

------------------------------------------------------------------------------------

2. If I change the constant to 0xfffff, the code then correctly disassembles :

 From the src .c file:

;  84 | *(gpio0 + 7) = (unsigned int) 0xfffff;

From the .asm file:

        LDR       V9, [SP, #4]          ; |84|
        LDR       A1, $C$CON10          ; |84|
        STR       A1, [V9, #28]         ; |84|

 .align 4
$C$CON10: .field   1048575,32