arm指令之beq和bnq

2021-09-12 19:40:23 字數 1021 閱讀 2296

本文將主要討論arm指令中的beq和bnq指令,這倆指令也比較容易搞混。

先看下arm指令的基本格式:

由上面的指令格式,實際上beq可以看做b+eq,bnq可以看做b+nq ,即opcode指令助記符b和cond指令條件的結合。事實上很多指令都可以看做是opcode指令助記符b和cond指令條件的結合,比如ldreq就可以看做ldr+eq。

b指令是跳轉指令,使用方法如下:

cond指令條件的詳細資訊見下表:

上表中,我們會看見很多標誌位z、c、n等,這就涉及到cpsr暫存器了。下表是cpsr狀態暫存器中各標示位的詳細講解。

示例解析:

cmp r0, r1			

beq run1

如上是beq乙個最簡單的示例,比較r0和r1暫存器的值,如果相等,則跳轉到run1;這時由於r0和r1暫存器的值相等,cpsr狀態暫存器的z=1。

cmp r0, r1			

bne run2

如上是bnq乙個最簡單的示例,比較r0和r1暫存器的值,如果不相等,則跳轉到run2;如果r0和r1暫存器的值不相等,cpsr狀態暫存器的z=0。

arm彙編之 bne與beq

在網上看了一些bne和beq的區別,但是對於初學者來說,容易越看越糊塗,因此簡單介紹下 我們先分析cpsr暫存器的z標識位 cmp指令可以直接影響cpsr暫存器的z標識位 條件位 從圖中可以看出 比較結果為0時,z位置1,比較結果為非0時,z位為0 再來看一段sdram重定位中的子過程 不必糾結於子...

thumb指令和arm指令

參考 一 為什麼乙個晶元需要thumb和arm兩套指令集 許多複雜的功能在複雜指令集 cisc 處理器上執行只需要單一的一條指令,即可,雖然可能有點慢,在精簡指令集處理器上可能需要多條指令,所以在精簡指令集 risc cpu上為了減少額外的指令對記憶體的消耗,考慮引入thumb指令集到處理器。現在最...

ARM指令之精髓DMB,DSB,ISB指令

4.3.5 組合語言 指令隔離 barrier 指令和儲存器隔離指令 cm3 中的另一股新鮮空氣是一系列的隔離指令 亦可以譯成 屏障 路障 可互換使用 譯者 注 它們在一些結構比較複雜的儲存器系統中是需要的 典型地用於流水線和寫緩衝 譯者注 在 這類系統中,如果沒有必要的隔離,會導致系統發生紊亂危象...