作者kikiqqp (喵食罐头)
看板ASM
标题Re: [问题] 请问 PROC 为何物哉?
时间Fri Jan 28 22:16:39 2011
※ 引述《loteslogin (张三立)》之铭言:
贵样,敝人才疏学浅!乃一介米虫,使用PIC16F班门弄斧之下还请多加见谅
编译器的虚指令通常都是有头有尾,使得编译器可以作编译范围判断
但实际程式指令并不是虚指令,所以并没有这样的限制
以这样的code为例
CALL TEST1
CALL TEST2
TEST1:
NOP
NOP
TEST2:
NOP
NOP
RET
编译後为
0000H RCALL 02H
0001H RCALL 04H
0002H NOP
0003H NOP
0004H NOP
0005H NOP
0006H RET
0007H NOP
第一个CALL发生时跳到02H执行,此时Stack写入01H
执行到06H RET时,RET取回Stack最後一笔数值後清除,返回01H位置
执行第二个CALL,跳到04H执行,此时Stack写入02H
执行到06H RET时,RET取回Stack最後一笔数值後清除,返回02H位置
--
接着执行到06H RET时,RET取回Stack最後一笔数值後清除,但Stack里面没有东西
Stack Under Flow,翘蛋
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.116.119.110
1F:推 waterwarm:XD 01/29 00:07
2F:推 loteslogin:气质点数 ☆☆☆ +1 ☆☆☆ 02/08 15:11