熊仔 发表于 2023-9-19 13:03:05

是的,写完IE之后还会执行下一条.

tzz1983 发表于 2023-9-19 13:07:08

熊仔 发表于 2023-9-19 12:51
取地址,译码,执行
译码的时候读取下一条。根据下一条是否,写入 IE操作,来延期中断。



是的, 如果追求极限速度, 我认为可以
PUSHIE
CLR EA



POP R11
ORL A #080H
ORL IE A

进临界区2个时间, 出来三个时钟

熊仔 发表于 2023-9-19 13:07:42

所以这部分一定要用汇编写才能准确.
C估计不准确的,不然读取EA到C,或者到A,然后保存到变量。再执行EA=0。

熊仔 发表于 2023-9-19 13:13:34

pendSV中断里面,还是直接EA=0EA=1,简单粗暴,完事了

本来就不可能返回来的时候是关中断。关中断都是程序员的bug。
这里真没必要考虑嵌套

熊仔 发表于 2023-9-19 13:31:15

tzz1983 发表于 2023-9-19 13:07
是的, 如果追求极限速度, 我认为可以
PUSHIE
CLR EA


ANL A,#0X80

tzz1983 发表于 2023-9-19 14:32:17

本帖最后由 tzz1983 于 2023-9-19 14:33 编辑

熊仔 发表于 2023-9-19 13:31
ANL A,#0X80
嗯, 我经常出写错这种错.
从广泛的整体面说, 我认为方法2确实会有"堆栈寻址的不适合",这个问题, 因为编绎器我们管不住它, 谁知道它会用什么方法来实现自己的目的
只用在局部是没问题的, 就像刚才说的中断那个位置, 前后代码都可控.
只调了一个外部函数, 就算是用到栈基寻址,调用过后是用新的栈基址了, 无关了

熊仔 发表于 2023-9-19 14:58:42

PUSHIE
CLR EA



POP PSW
MOV   EA,C

这样前后都2条指令,更优。

edalab 发表于 2023-9-19 15:04:24

熊仔 发表于 2023-9-19 14:58
PUSHIE
CLR EA



这样会改变PSW,会有问题

熊仔 发表于 2023-9-19 15:13:45

不会,PSW,ACC都是可以操作的。判断的时候才用到。

熊仔 发表于 2023-9-19 15:18:31

用户的指令不会中断,判断语句。
有硬件中断才会,但是中断会入栈。

如果会出错的话,那就没法调用函数了。函数里面都在操作这两个最为繁忙的寄存器
页: 1 [2] 3 4 5 6 7
查看完整版本: 关于"访问"的表达是否准确?