How to write code to help complier store variable into register??

Hi all

I try to use Generate Assembler SRC file to see the assembler code ,I found the complier is smart
enough to stroe variable into register sometimes ,
but sometimes is strange. I try to complier same code
twice times ,one time, it will sotre into register ,
one time is not,Why??

The first time ,I got this

?XD?int0_hander?MAIN
SEGMENT XDATA OVERLAYABLE

RSEG ?XD?_int0_hander?MAIN
?int_hander?BYTE:

msgsts?040: DS 1

intsts?041: DS 1

The second time,I got this

msgsts?040 is stroe in R2 register

intsts?041 is also stroe in R2 register

Another example,I have a interrupt handler function
it just read clear the interrupt status register

void irc_int_hander(void)
{
 intsts = ptr_reg[IRC_INT_STS];

dma_task_scheduler(0,0,0);

}

why "insts" will not store into register ,there is R2,R6 are free, but others more complex code can do this well.

any comment is welcome

Best Regards

More questions in this forum