2020 11 15 堆疊相關指令

2021-10-12 13:00:01 字數 995 閱讀 8891

暫存器:

esp:棧指標暫存器/當前堆疊用的位置

堆疊是從大位址到小位址的順序使用的。

堆疊的使用:儲存資料

mov dword ptr ds:[0x18ff88], 1        //向堆疊寫入資料

mov dword ptr ds:[0x18ff84], 2        //向堆疊寫入資料

sub esp, 8        //設定esp、告訴系統堆疊使用到了**

add esp, 8        //設定esp、寫入的資料不需要了,恢復堆疊位置

太複雜了?試試堆疊相關指令!

push r32

push r16

push m16

push m32

push imm8/imm16/imm32

堆疊的使用:釋放資料

push dword ptr ds:[0x18ffa4]

push 1

push 2

push 3

add esp, 0xc        //上面壓入的資料不需要了, 可以直接恢復堆疊

但是,如果不用某個資料了,又需要把資料存放到其他地方怎麼辦呢?

push ecx

mov ecx, 0x10

mov ecx, dword ptr ds:[esp]        //將原資料取出來放回去

add esp, 0x4        //恢復棧頂指標暫存器

太複雜了?看看下面的指令!

pop r32

pop r16

pop m16

pop m32

堆是堆,棧歸棧

堆是堆,棧歸棧 第一 堅決澄清 堆是堆,棧歸棧。第二 曾經的 堆疊 再不允許重談,簡直就是扯淡!第三 下面內容均屬於從記憶體分配角度的闡述,不要與資料結構混淆。1 程式的記憶體分配 1 記憶體分配詳解 乙個由c c 編譯的程式占用的記憶體分為以下幾個部分 1 棧區 stack 由編譯器自動分配釋放,...

堆疊入門 堆和棧區別

在計算機領域,堆疊是乙個不容忽視的概念,我們編寫的c語言程式基本上都要用到。但對於很多的初學著來說,堆疊是乙個很模糊的概念。堆疊 一種資料結構 乙個在程式執行時用於存放的地方,這可能是很多初學者的認識,因為我曾經就是這麼想的和組合語言中的堆疊一詞混為一談。我身邊的一些程式設計的朋友以及在網上看帖遇到...

堆疊入門 堆和棧區別

在計算機領域,堆疊是乙個不容忽視的概念,我們編寫的c語言程式基本上都要用到。但對於很多的初學著來說,堆疊是乙個很模糊的概念。堆疊 一種資料結構 乙個在程式執行時用於存放的地方,這可能是很多初學者的認識,因為我曾經就是這麼想的和組合語言中的堆疊一詞混為一談。我身邊的一些程式設計的朋友以及在網上看帖遇到...