Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
要在 M68000 汇编程序中处理并发,我需要了解 TAS 指令的工作原理。
我并不真正关心从手册中可以看到的理论描述(例如http://68k.hax.com/TAS)。最重要的是,我想看到一些例子。
实际上,这条指令并没有太多内容。68k 汇编中的一段典型自旋锁代码可能如下所示:
lea.l spinLock(pc),a0 getLock: tas (a0) bne.s getLock bra haveLock spinLock dc.b 0
代码将字节的 MSB 设置为spinLock,然后循环直到设置零标志(告诉您该位之前未设置,即没有其他代码已经获得锁定)。重要的是 TAS 指令是原子的,也就是说,它不能在位测试和集合之间被其他代码(例如 ISR)中断。
spinLock