• 29
  • 9月

IAR对局部部变量,一般是采取虚拟寄存器的方式来进行访问。如果是外部堆栈的话,有时它会将SPH,SP的值赋至DPTR中,然后使用DPTR来对堆栈进行操作。

然而,除了将SPH和SP的值赋至DPTR外,它还会做一些动作。

ANL    A,#0x03         ; Maks out relevant ESP bits.<br />
ORL     A,#(HIGH(sfb(EXT_STACK)) & 0xFC)<br />
MOV    DPH,A


其实就是会将堆栈的高6BIT地址强制不可改。具体作用暂时不明。

不过,如果有做一些多BIN的工程时,可就要小心了,需要保证堆栈的高6BIT地址不变,否则可能出一些不可预料的错误。