要在M68000汇编程序中处理并发,我需要了解TAS指令是如何工作的。
我真的不关心我从手册中看到的理论描述(例如http://68k.hax.com/TAS)。最重要的是,我想看到一些例子。
发布于 2021-01-27 22:42:27
实际上,这条指令没有太多意义。在68k汇编中,一个典型的自旋锁代码可能看起来像这样:
lea.l spinLock(pc),a0
getLock:
tas (a0)
bne.s getLock
bra haveLock
spinLock
dc.b 0
代码在spinLock
处设置字节的最大有效位,并循环直到设置了零标志(告诉您之前没有设置该位,即没有其他代码段已经获得锁)。重要的是TAS指令是原子的,也就是说,它不会被位测试和设置之间的其他代码(例如ISR )中断。
https://stackoverflow.com/questions/65652643
复制相似问题