Black Hole
@highone
說
Thu, Feb 20, 2020 1:06 PM
Thu, Feb 20, 2020 1:07 PM
今天對Toggle bit的操作做了深入的研究。
byte.bit0 != byte.bit0
byte.bit0 ^= 1
byte.bit0 = byte.bit0 ^1
三種寫法在編譯過後的行數不一樣,神奇的是2跟3居然有差
Black Hole
@highone
Thu, Feb 20, 2020 1:09 PM
最佳解是 byte ^= (1<<0),在優化等級1時一個指令就能完成
Black Hole
@highone
Thu, Feb 20, 2020 1:27 PM
不過這主要是看單晶片提供的指令集吧,換其它系列的產品可能就不一樣了
Black Hole
@highone
Thu, Feb 20, 2020 1:30 PM
還有終於搞懂為什麼PIC要加上鎖存器來控制IO,是為了處理RMW問題,硬體速度跟不上指令的問題
又逛了一圈後,發現到ARM系列後就沒這個問題,因為速度夠快了
果然PIC就是爛
載入新的回覆
byte.bit0 != byte.bit0
byte.bit0 ^= 1
byte.bit0 = byte.bit0 ^1
三種寫法在編譯過後的行數不一樣,神奇的是2跟3居然有差
又逛了一圈後,發現到ARM系列後就沒這個問題,因為速度夠快了
果然PIC就是爛