X86 PUSHA指令详解

SDM指令功能描述(PUSHA)
总体描述:
按照顺序将general-purpose寄存器压到栈上。按照当前的操作数宽度属性:
32:
EAX ECX EDX EBX ESP EBP ESI EDI
16:
AX CX DX BX SP BP SI DI

在实模式下,如果ESP/SP的值是1 3 5的时候,使用了PUSHA或PUSHAD指令则会触发#SS异常

注:D/B flag在代码段中表示指令引用有效地址和操作数的长度 此指令不可在64位下使用

伪代码:

64bit mode
#UD
if(操作数宽度是32) PUSHAD
{
    temp = ESP
    PUSH(EAX)
    PUSH(ECX)
    PUSH(EDX)
    PUSH(EBX)
    PUSH(temp)
    PUSH(EBP)
    PUSH(ESI)
    PUSH(EDI)
}
else PUSHA
{
    temp = SP
    PUSH(AX)
    PUSH(CX)
    PUSH(DX)
    PUSH(BX)
    PUSH(temp)
    PUSH(BP)
    PUSH(SI)
    PUSH(DI)
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值