mfctr
Move from Count Register - 7C 09 02 A6
mfctr
Instruction Syntax
| Mnemonic | Format | Description |
| mfctr | rD | Move from Count Register |
Instruction Encoding
0
1
1
1
1
1
D
D
D
D
D
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
| Field | Bits | Description |
| Primary Opcode | 0-5 | 011111 (0x1F) |
| rD | 6-10 | Destination register |
| Reserved | 11-15 | 00000 |
| Reserved | 16-20 | 00000 |
| Reserved | 21-29 | 000000000 |
| Reserved | 30 | 0 |
| SPR | 31-31 | Special Purpose Register (9 = CTR) |
Operation
rD ← CTR
The contents of the Count Register (CTR) are copied into register rD.
Affected Registers
General Purpose Register (rD)
(always)
- Updated with the value from CTR
Examples
Basic Move from Count Register
mfctr r3 # Copy CTR value to r3
Save and Restore CTR
# Save CTR before using it mfctr r10 # Save current CTR value mtctr r3 # Set CTR for new purpose # ... use CTR ... mtctr r10 # Restore original CTR value
Loop Counter Check
# Check remaining loop iterations
li r3, 10 # Set initial count
mtctr r3 # Load into CTR
loop:
# ... loop body ...
mfctr r4 # Get current CTR value
cmpwi r4, 0 # Check if zero
bne loop # Continue if not zero
Function Address Retrieval
# Get function address from CTR mfctr r3 # Get address from CTR # r3 now contains the function address # Can be used for debugging or analysis
Dynamic Code Analysis
# Analyze code execution flow mfctr r3 # Get current execution address # r3 contains the address where execution will continue # Useful for debugging or profiling