• 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地址不变,否则可能出一些不可预料的错误。

» Tags:IAR, 堆栈

» 这篇文章共有4条评论,你可以在文章底部留下你的评论

  1. 2011-10-15 13:42

    这是确切信息我要找的,谢谢! Arron

  2. 叉叉兵 Says:
    2011-10-24 12:51

    好高深的问题,完全不懂呢

  3. 石牛 Says:
    2014-06-13 16:47

    之前也有碰到过这个问题,用时就很小心了。但一直不知道原因,楼主现在可知道原因?

  4. Hanny Says:
    2014-06-20 21:03

    @石牛
    IAR的BUG。

发表评论