精選文章
- 取得連結
- X
- 以電子郵件傳送
- 其他應用程式
標籤
ARM 教材 - cortex-m - 4 - bit-banging
Index: Data Processing
Hackpad
bit-banging : 操作相關的 bits
所以指令設計還是很重要的, 有一個好的指令, 原本兩個 cycle 可以縮成 1 個 cycle,
可以大幅提升效能.
Ref: https://embedded2016.hackpad.com/ARM-Architecture-z5hdXADIEm2
Hackpad
bit-banging : 操作相關的 bits
- - forcing bits to be 1 : ORR
- - forcing bits to be 0 : MVN-AND, BIC
- - forcing bits to flip : EOR
- 邏輯運算指令 : AND / ORR / EOR / BIC / ORN : ARM info center
範例:
- #define MASK 0x0110
- DestA = SrcA | MASK;
- DestB = SrcB | MASK;
- assembly :
- MOVW R0, #0x0110
- ORR R2, R1, R0
- ORR R4, R3, R0
範例2: BIC 可用在清除某些 bit
- #define MASK 0x0110
- DestA = SrcA & ~MASK;
- DestB = SrcB & ~MASK;
- assembly1 :
- MOVW R0, #0x0110
- MVN R0, R0
- AND R2, R1, R0
- AND R4, R3, R0
- assembly2 :
- MOVW R0, #0x0110
- BIC R2, R1, R0
- BIC R4, R2, R0
BIC : 將 operand2 反碼, 和前面做 AND
所以指令設計還是很重要的, 有一個好的指令, 原本兩個 cycle 可以縮成 1 個 cycle,
可以大幅提升效能.
Ref: https://embedded2016.hackpad.com/ARM-Architecture-z5hdXADIEm2
- Bit-wise logical operations:
- BIC : bit clear
- AND r0, r1, r2 ; r0 := r1 and r2
- ORR r0, r1, r2 ; r0 := r1 or r2
- EOR r0, r1, r2 ; r0 := r1 xor r2
- BIC r0, r1, r2 ; r0 := r1 and not r2
留言
張貼留言