0
0
Cnc-programmingConceptBeginner · 3 min read

CMP Instruction in ARM: What It Is and How It Works

The CMP instruction in ARM compares two values by subtracting one from the other without saving the result. It updates the processor's condition flags to reflect the comparison, which can then control conditional execution of instructions.
⚙️

How It Works

The CMP instruction works like a simple comparison tool. It subtracts the second value from the first but does not keep the subtraction result. Instead, it updates special markers called condition flags inside the processor. These flags tell the processor if the first value was equal to, greater than, or less than the second value.

Think of it like weighing two objects on a scale without keeping the weight difference recorded. You only note if one side is heavier, lighter, or balanced. Later, the processor uses these flags to decide which instructions to run next, such as jumping to a different part of the program if one value is bigger.

💻

Example

This example compares two registers and then uses a conditional branch based on the comparison result.

armasm
    MOV R0, #5      ; Load 5 into register R0
    MOV R1, #10     ; Load 10 into register R1
    CMP R0, R1      ; Compare R0 and R1 (5 - 10)
    BGE label       ; Branch to 'label' if R0 >= R1
    MOV R2, #0      ; If not branched, set R2 to 0
label:
    MOV R2, #1      ; If branched, set R2 to 1
Output
R2 will be set to 0 because 5 is less than 10, so the branch is not taken.
🎯

When to Use

Use the CMP instruction whenever you need to compare two values in ARM assembly. It is essential for making decisions in your code, like choosing between different actions or looping until a condition is met.

For example, you might compare a counter to a limit to decide if a loop should continue, or compare two numbers to decide which one is larger. The CMP instruction sets the condition flags that control conditional instructions like BNE (branch if not equal) or BLE (branch if less or equal).

Key Points

  • CMP subtracts two values but does not store the result.
  • It updates condition flags used for conditional execution.
  • Commonly paired with branch instructions to control program flow.
  • Essential for decision-making and loops in ARM assembly.

Key Takeaways

CMP compares two values by subtracting without saving the result.
It updates condition flags that control conditional instructions.
Use CMP before branch instructions to make decisions in code.
CMP is fundamental for loops and conditional logic in ARM assembly.