PUSHA/PUSHAD

PUSHA/PUSHAD

http://124.16.151.186/docs/optimization/VTune(TM) User's Guide/mergedProjects/analyzer_ec/mergedProjects/reference_olh/instruct32_hh/vc267.htm

说明

将通用寄存器的内容压入堆栈。这些寄存器按以下顺序存储到堆栈:EAX、ECX、EDX、EBX、EBP、ESP(原始值)、EBP、ESI 及 EDI(如果当前操作数大小属性为 32);AX、CX、DX、BX、SP(原始值)、BP、SI 及 DI(如果操作数大小属性为 16)。这些指令执行 POPA/POPAD 指令的逆操作。ESP 或 SP 寄存器压入的值是它在第一个寄存器压入之前的值(请参阅下面的“操作”部分)。

PUSHA(全部压入)与 PUSHAD(压入所有双字)助记符引用相同的操作码。当操作数属性为 16 时,使用 PUSHA 指令,而当操作数属性为 32 时,使用 PUSHAD 指令。某些汇编器可能在使用 PUSHA 时将操作数大小强制为 16,而在使用 PUSHAD 时将操作数大小强制为 32。其它汇编器可能会将这些助记符看作同义词 (PUSHA/PUSHAD),并使用操作数大小属性的当前设置来确定要压入堆栈的值的大小,而不管使用哪一个助记符。

在实地址模式中,如果执行 PUSH/PUSHAD 指令时,ESP 或 SP 寄存器为 1、3 或 5,则处理器会由于堆栈空间不足而关闭。不会生成指示此情况的异常。

操作

IF OperandSize 32 (* PUSHAD instruction *)

THEN

Temp

(ESP);

Push(EAX);

Push(ECX);

Push(EDX);

Push(EBX);

Push(Temp);

Push(EBP);

Push(ESI);

Push(EDI);

ELSE (* OperandSize

16, PUSHA instruction *)

Temp

(SP);

Push(AX);

Push(CX);

Push(DX);

Push(BX);

Push(Temp);

Push(BP);

Push(SI);

Push(DI);

FI;

📚 相关推荐

情侣游戏终极指南:20+款非竞技向选择
365bet娱乐场注册

情侣游戏终极指南:20+款非竞技向选择

📅 08-29 👁️ 3050
《魔法门挂机》三大种族 橙色佣兵阵容解析
365bet体育在线赌博

《魔法门挂机》三大种族 橙色佣兵阵容解析

📅 01-21 👁️ 2208
零基础也能上手,一文教你如何自己做动画短片
365bet体育在线赌博

零基础也能上手,一文教你如何自己做动画短片

📅 08-11 👁️ 3054
深入剖析Redis延迟问题的原因及多种诊断工具与方法
365bet体育在线赌博

深入剖析Redis延迟问题的原因及多种诊断工具与方法

📅 02-05 👁️ 179
青桔发布首款概念车 智慧物联助力共享出行良性发展
365bet体育在线赌博

青桔发布首款概念车 智慧物联助力共享出行良性发展

📅 08-24 👁️ 858
【编导艺考】分镜头剧本写作格式及示范
365bet体育在线赌博

【编导艺考】分镜头剧本写作格式及示范

📅 09-12 👁️ 6134
lol属于诺克萨斯的英雄有哪些
365bet体育在线赌博

lol属于诺克萨斯的英雄有哪些

📅 07-29 👁️ 7317
金瓜的种植方法
365bet娱乐场注册

金瓜的种植方法

📅 06-19 👁️ 4525
美的p6故障解决方法
英国365

美的p6故障解决方法

📅 09-18 👁️ 2874