push.w
Push (Wide)
PUSH.W <registers>
Thumb-2 32-bit Push.
Pseudocode Operation
SP ← SP - 4 * PopCount(registers)
for i = 0 to 15
if registers[i] == 1 then
memory[SP + 4*(count_of_set_bits_below_i)] ← Ri
Example
PUSH.W registers
Encoding
Binary Layout
1110100
31:25
10
24:23
0
22
1
21
0
20
1101
19:16
0
15
M
14
register_list
13:0
Operands
-
registers
List
Related
More in T32 (Thumb2)
Reference
View in Arm A64 ISA Reference ↗
Arm AArch32 ISA
Instruction Forms
| Encoding | Instruction | ISA | Bit pattern | ||
|---|---|---|---|---|---|
| 0xB400 | PUSH{<c>}{<q>} <registers> | T32 | 1011 | 0 | 10 | M | register_list | ||
| 0x092D0000 | PUSH{<c>}{<q>} <registers> | A32 | cond | 100 | 1 | 0 | 0 | 1 | 0 | 1101 | register_list | ||
| 0xE92D0000 | PUSH{<c>}.W <registers> | T32 | 1110100 | 10 | 0 | 1 | 0 | 1101 | 0 | M | register_list | ||
| 0x052D0004 | PUSH{<c>}{<q>} <single_register_list> | A32 | cond | 010 | 1 | 0 | 0 | 1 | 0 | 1101 | Rt | 000000000100 | ||
| 0xF84D0D04 | PUSH{<c>}{<q>} <single_register_list> | T32 | 111110000 | 10 | 0 | 1101 | Rt | 1 | 1 | 0 | 1 | 00000100 |
Description
Stores multiple general-purpose registers to the stack, storing to consecutive memory locations ending just below the address in SP, and updates SP to point to the start of the stored data