PUSHAD和POPAD,以及PUSHA和POPA

2021-10-24 00:22:41 字數 1203 閱讀 3814

pushad也叫保護現場,就是把我們的暫存器壓入棧中

pushad是把eax,ecx,edx,ebx,esp、ebp,esi,edi依次壓入棧中,esp會減少32,相當於:

push eax

push ecx

push edx

push ebx

push esp

push ebp

push esi

push edi

就是我們在od的暫存器視窗,看到的暫存器順序,按照由上往下的順序,依次壓入棧,我們觀察一下edi的值,

此時棧頂值為:

執行pushad這條語句,棧頂值變成edi的值了

popad也叫還原現場,將棧中儲存的暫存器值返還給暫存器

與pushad順序相反,將棧中資料彈出,依次傳給edi、esi、ebp、esp、ebx、edx、ecx、eax

相當於依次執行:

pop edi

pop esi

pop ebp

pop esp

pop ebx

pop edx

pop ecx

pop eax

pusha和popa是操作16位暫存器的,功能與pushad和popad相同

pusha相當於

push ax

push cx

push dx

push bx

push sp

push bp

push si

push di

popa相當於依次執行:

pop di

pop si

pop bp

pop sp

pop bx

pop dx

pop cx

pop ax

I幀,P幀和B幀以及DTS和PTS的關係

基本概念 p frame 前向 編碼幀,又稱predictive frame,通過充分將低於影象序列中前面已編碼幀的時間冗餘資訊來壓縮傳輸資料量的編碼影象,也叫 幀 b frame 雙向 內插編碼幀,又稱bi directional interpolated prediction frame,既考慮...

p 和 p的區別

p 和 p的區別 舉例,如清單3 cpp view plain copy include intmain void int p arr inta p 等價於a p 即a p p p 1 intb p 等價於b p 即p p 1 b p printf a d,b d n a,b return 0 例子...

C語言 p p以及 p的區別

前言 先要理解位址和資料,你可以想象有很多盒子,每個盒子有對應的號碼,那個號碼叫做 位址 而盒子裡放的東西叫做 資料 上面就段理解了,p和p的區別就不難解釋了。p是指標變數,用來存放位址,你可以認為是上面所說的盒子的號碼,是解引用操作符,你可以把它理解成開啟盒子,p就是開啟p號盒子,取出裡面的資料。...