强奸久久久久久久|草草浮力在线影院|手机成人无码av|亚洲精品狼友视频|国产国模精品一区|久久成人中文字幕|超碰在线视屏免费|玖玖欧洲一区二区|欧美精品无码一区|日韩无遮一区二区

首頁(yè) > 資訊 > 問(wèn)答 > 堆棧指針,堆棧指針的過(guò)程用文字描述

堆棧指針,堆棧指針的過(guò)程用文字描述

來(lái)源:整理 時(shí)間:2023-08-19 06:13:56 編輯:智能門(mén)戶 手機(jī)版

本文目錄一覽

1,堆棧指針的過(guò)程用文字描述

堆棧有兩個(gè)指針,一個(gè)用來(lái)標(biāo)記堆棧的底部。一個(gè)用來(lái)標(biāo)記新加入元素的位置,增加一個(gè)元素,這個(gè)指針就上移一個(gè)單元,反之下移,直至與堆棧底部指針?biāo)竼卧嗟葧r(shí),堆棧為空。當(dāng)所指位置與底部指針?biāo)肝恢迷貍€(gè)數(shù)等于指定最大個(gè)數(shù)時(shí),棧滿

堆棧指針的過(guò)程用文字描述

2,堆棧指針的運(yùn)作

指針向下移就表示是入棧 入棧了當(dāng)然會(huì)創(chuàng)建新的內(nèi)存了 向上移那就是出棧 就釋放出棧的那個(gè)內(nèi)存
向下移動(dòng),就是SP+1,會(huì)在new一個(gè)內(nèi)存單元;向上移動(dòng),SP-1,就把SP指向的單元dele掉。

堆棧指針的運(yùn)作

3,關(guān)于 堆棧指針的問(wèn)題

兩種思路考慮: 1,正向思考 如果棧為空,則棧頂指針也應(yīng)該指向數(shù)組的外面。 如果兩個(gè)棧里面的元素都是1的時(shí)候,你的答案就是正確的了。 2,逆向思考 棧頂指針指向是是棧的top元素。 如果棧為空,棧頂指針應(yīng)該不指向任何有效元素。 如果棧里面的元素是1的話,top[1] = 1; 因?yàn)閞eturn stack[top[1]]恰好就是數(shù)組的第一個(gè)元素。 這應(yīng)該是題意要求的。 反之,假設(shè)LZ的答案是正確的。 ??盏臅r(shí)候,top[1] = 1; 那么棧有一個(gè)元素的時(shí)候,棧頂指針++,top[1] = 2;這就浪費(fèi)了數(shù)組的一個(gè)存儲(chǔ)空間了。

關(guān)于 堆棧指針的問(wèn)題

4,單片機(jī)中堆棧指針的作用A指明棧底的位置 B指明棧頂?shù)奈恢?C

選擇B。堆棧指針主要用來(lái)保存臨時(shí)數(shù)據(jù)、局部變量和中斷/ 子程序的返回地址。棧頂?shù)奈恢糜蓷V羔楽P指出。
你好!選擇B。堆棧指針主要用來(lái)保存臨時(shí)數(shù)據(jù)、局部變量和中斷/ 子程序的返回地址。棧頂?shù)奈恢糜蓷V羔楽P指出。如果對(duì)你有幫助,望采納。
答案B 堆棧指針SP存放的是堆棧區(qū)的地址。假設(shè)SP剛開(kāi)始存放的是30H,那么執(zhí)行PUSH direct 的時(shí)候,把direct地址所指示的存儲(chǔ)器單元的數(shù)據(jù)壓入(SP)←(SP)+1(此時(shí)sp先進(jìn)行加一)也就是31H(存儲(chǔ)器單元地址),這時(shí)如果還有數(shù)據(jù)要壓入堆棧區(qū),就依次執(zhí)行,即放入32H,33H中,當(dāng)放到33H的時(shí)候,此時(shí)SP中的值就是33H,就是SP指向33H存儲(chǔ)器單元。此時(shí)如果有指令POP direct ,則從33H開(kāi)始取出數(shù)據(jù),然后SP自減一,再取出下一條。因此,此時(shí)所說(shuō)的棧頂就是堆棧區(qū)地址中最大的數(shù),指到33H的時(shí)候,就是33H,取出33H中的數(shù)據(jù)后,棧頂就是32H。

5,什么是堆棧指針如何理解堆棧指針

堆棧指針有以下特點(diǎn):在堆上分配空間,即指向堆空間堆上分配的最大空間是4G好像沒(méi)有其它特點(diǎn)了 ^_^
堆棧是一個(gè)抽象數(shù)據(jù)類(lèi)型,規(guī)定的兩項(xiàng)必備的基本操作分別為入棧和出棧。這個(gè)抽象數(shù)據(jù)類(lèi)型并沒(méi)規(guī)定入棧與出棧具體要怎么實(shí)現(xiàn)。你問(wèn)的問(wèn)題已經(jīng)在實(shí)現(xiàn)這一層面 上,所以按照堆棧這種抽象數(shù)據(jù)類(lèi)型的規(guī)定看,“先修改指針,然后插入數(shù)據(jù),出棧時(shí)剛好相反”并不是必須的,這取決于你的操作的具體實(shí)現(xiàn)。 如果你的堆棧的實(shí)現(xiàn)是往上長(zhǎng)的(就是說(shuō)往頂?shù)姆较蜷L(zhǎng),其實(shí)質(zhì)是你的棧底是定死的不能動(dòng),入棧的東西只能不斷往上疊,這就像你在書(shū)桌上放書(shū)一樣,桌 底是定死的,所以你的書(shū)只能一本一本地往上堆,往上長(zhǎng)),計(jì)算機(jī)內(nèi)部的堆棧的實(shí)現(xiàn)采取的就是這種模式,所以就得像你說(shuō)的那樣,“先修改指針,然后插入數(shù) 據(jù),出棧時(shí)剛好相反”,因?yàn)槟愣褩V羔樦赶虻目偸菞m斣?,棧底不能?dòng),所以數(shù)據(jù)入棧前要先修改指針使它指向新的空余空間然后再把數(shù)據(jù)存進(jìn)去,出棧的時(shí)候 自然相反,你聯(lián)系我上面舉的放書(shū)的例子仔細(xì)想想。 然而,如果你的堆棧的實(shí)現(xiàn)是往下長(zhǎng)的(就是說(shuō)你每壓一個(gè)元素入棧,棧底就自動(dòng)下移一個(gè)元素的位置,其實(shí)質(zhì)就是這種堆棧模型是一個(gè)“無(wú)底洞”型), 這個(gè)時(shí)候,你的棧頂就變成了定死的,你就可以先壓入元素,然后再修改指針。因?yàn)槟愕臈5资菬o(wú)限的,你壓入一個(gè)元素,新的元素就取代先前的棧頂元素占據(jù)棧頂 的位置,那么你先前的指向棧頂元素的指針這個(gè)時(shí)候就該修改讓它指向這個(gè)新的棧頂元素了。 下面的就是對(duì)“無(wú)底洞”型堆棧的一種實(shí)現(xiàn)的描述: 壓棧(入棧):將對(duì)象或者數(shù)據(jù)壓入棧中,更新棧頂指針,使其指向最后入棧的對(duì)象或數(shù)據(jù)。 彈棧(出棧):返回棧頂指向的對(duì)象或數(shù)據(jù),并從棧中刪除該對(duì)象或數(shù)據(jù),更新棧頂。 話說(shuō)回來(lái),計(jì)算機(jī)內(nèi)部肯定選第一種模型,不會(huì)選第二種,因?yàn)榈诙N模型,每壓入一個(gè)新的元素,都需要把之前堆棧里的所有元素整體下移動(dòng)一個(gè)元素的 位置,騰出棧頂元素的位置讓新的元素進(jìn)來(lái),這種平移可是一筆不小的開(kāi)銷(xiāo)??!但是并不是說(shuō)“無(wú)底洞”模型就沒(méi)辦法實(shí)現(xiàn)了,其實(shí)它可以通過(guò)第一種模型來(lái)模擬 的,每需要壓入一個(gè)新的元素的時(shí)候,就先開(kāi)辟一個(gè)空間,數(shù)據(jù)存入這個(gè)空間,然后再修改棧頂元素指針使其指向這個(gè)新的棧頂元素。 換句話說(shuō),用鏈表的話,只要有足夠的空間可開(kāi)辟出來(lái)作為一個(gè)節(jié)點(diǎn),那么兩種堆棧模型都能實(shí)現(xiàn)(當(dāng)然“無(wú)底洞”型還是如我上面說(shuō)的那樣用第一種模擬出來(lái)的,否則平移的工作量相當(dāng)可觀),如果用數(shù)組,由于數(shù)組在內(nèi)存中是連續(xù)分配出來(lái)的空間,用第一種模型更自然一些

6,匯編語(yǔ)言中的堆棧段指針是干什么的

匯編語(yǔ)言中的堆棧段指針是用來(lái)保存臨時(shí)數(shù)據(jù)、局部變量和中斷/調(diào)用子程序程序的返回地址。堆棧指針總是指向棧頂元素。在51系列單片機(jī)中,堆棧是向上生長(zhǎng)的,所以數(shù)據(jù)入棧的時(shí)候,堆棧指針先加1,再壓棧。出棧的時(shí)候先彈出數(shù)據(jù),堆棧指針再減1。但在AVR單片機(jī)中,堆棧是向下生長(zhǎng)的,數(shù)據(jù)入棧時(shí)指針將減1,數(shù)據(jù)出棧時(shí)指針將加1。
堆棧是用來(lái)存儲(chǔ)數(shù)據(jù)的,例如某個(gè)寄存器里面的數(shù)值或地址。堆??梢岳斫獬梢粋€(gè)倉(cāng)庫(kù),這個(gè)倉(cāng)庫(kù)里有很多格子,每個(gè)格子里放一個(gè)東西,每個(gè)格子都有一個(gè)編號(hào)。堆棧指針就是用來(lái)查找格子編號(hào)的,假設(shè)現(xiàn)在堆棧里有10個(gè)格子,編號(hào)依次是0,1,2,3,4,5,6,7,8,9,如果現(xiàn)在堆棧指針是5,那么就對(duì)應(yīng)5號(hào)格子里的內(nèi)容(數(shù)據(jù)或地址)
堆棧段指針(寄存器SS)是用于確定堆棧在內(nèi)存中的起始位置的寄存器;堆棧段寄存器的作用和其他段寄存器(CS,DS,ES)相同,都是為了在一整段的內(nèi)存中劃分區(qū)域:由于內(nèi)存為一整段儲(chǔ)存單元,CS(代碼段寄存器)中存放代碼段的起始位置,DS(數(shù)據(jù)段寄存器)中存放數(shù)據(jù)段的起始位置,SS(堆棧段寄存器)中存放堆棧段的起始位置,ES(附加段寄存器)中存放附加段的起始位置?! ≡诓僮飨到y(tǒng)架構(gòu)的內(nèi)存中,堆棧位于程序所使用內(nèi)存的頂端,向內(nèi)存低地址處擴(kuò)展,DS寄存器中存放的是堆棧最低的地址。堆棧本身為內(nèi)存的一部分,但是相對(duì)普通內(nèi)存段(DS)的區(qū)別在于:普通內(nèi)存段(DS)一般用于存放長(zhǎng)久數(shù)據(jù),無(wú)特殊存儲(chǔ)順序;堆棧內(nèi)存段(SS)一般用于存放暫時(shí)數(shù)據(jù)(例如調(diào)用函數(shù)是的參數(shù)),可以使用PUSH,POP指令向棧頂壓入,彈出數(shù)據(jù)?! ×硗?,若SP(棧頂寄存器)中的值小于DS寄存器(PUSH指令執(zhí)行過(guò)多次)將會(huì)引發(fā)錯(cuò)誤:系統(tǒng)顯示某某程序Stack Overflow(因?yàn)镾S段往下的內(nèi)存地址屬于數(shù)據(jù)段的區(qū)域)。若SP中的值大于一定程度(由程序的堆棧段大小決定)(POP指令執(zhí)行過(guò)多),也將會(huì)引發(fā)錯(cuò)誤:系統(tǒng)顯示某某程序Access Violation Reading Address(因?yàn)槌绦騼?nèi)存的頂端上有著其他數(shù)據(jù))?! ⌒枰⒁獾氖?,在較新的操作系統(tǒng)下匯編其平臺(tái)下的程序時(shí),程序員將無(wú)法修改段寄存器中的值(修改會(huì)報(bào)錯(cuò)),它們由操作系統(tǒng)自身管理(可以理解為由操作系統(tǒng)編寫(xiě)者的代碼管理),其原因是出于安全起見(jiàn)。
16位匯編下堆棧段SS寄存器是表示一個(gè)堆棧的基址,實(shí)際地址是(ss)*16+(sp)=物理地址,這個(gè)是當(dāng)前對(duì)戰(zhàn)指針指向的實(shí)際地址。
堆棧段是保存數(shù)據(jù)的esp就是地址指標(biāo)器push eax時(shí),esp-4pop eax時(shí),esp+4程序調(diào)用call時(shí)會(huì)執(zhí)行壓棧操作,保存 下一條指令地址返回時(shí)會(huì)執(zhí)行出棧操作,取出 上面保存的地址 放到 PC繼續(xù)執(zhí)行。當(dāng)然自己也可以執(zhí)行入棧,出棧操作,保存寄存器狀態(tài)等 甚至可以當(dāng)作數(shù)據(jù)段 使用,保存臨時(shí)變量等
文章TAG:堆棧指針堆棧指針的過(guò)程用文字描述

最近更新

  • 石墨的結(jié)構(gòu),石墨結(jié)構(gòu)如何石墨的結(jié)構(gòu),石墨結(jié)構(gòu)如何

    石墨結(jié)構(gòu)如何2,石墨結(jié)構(gòu)是什么3,石墨是什么是有什么組成的4,石墨結(jié)構(gòu)是5,石墨晶體是層狀結(jié)構(gòu)如圖以下有關(guān)石墨晶體的說(shuō)法正確的一組是6,石墨是什么狀結(jié)構(gòu)的7,為什么石墨板遇硝酸會(huì)腐蝕石墨板.....

    問(wèn)答 日期:2023-08-19

  • 鋰鹽,鋰鹽是鹽嗎鋰鹽,鋰鹽是鹽嗎

    鋰鹽是鹽嗎2,含鋰鹽的食品有哪些3,金屬鋰鹽化學(xué)成分4,鋰鹽和鐵鹽的凈水作用分別是什么5,鋰鐵磷酸鹽和鋰鹽是一種東西嗎6,鋰鹽對(duì)人體有害嗎1,鋰鹽是鹽嗎鹽的定義是金屬離子和酸根離子結(jié)合,有一.....

    問(wèn)答 日期:2023-08-19

  • 電機(jī)結(jié)構(gòu),電動(dòng)機(jī)的基本構(gòu)造電機(jī)結(jié)構(gòu),電動(dòng)機(jī)的基本構(gòu)造

    電動(dòng)機(jī)的基本構(gòu)造2,三相異步電動(dòng)機(jī)的結(jié)構(gòu)主要包括哪兩種3,電機(jī)的結(jié)構(gòu)原理4,直流電機(jī)有哪幾部分組成5,電機(jī)由什么組成6,三相異步電動(dòng)機(jī)的結(jié)構(gòu)1,電動(dòng)機(jī)的基本構(gòu)造定子和轉(zhuǎn)子2,三相異步電動(dòng)機(jī)的.....

    問(wèn)答 日期:2023-08-19

  • 可口可樂(lè)銷(xiāo)量數(shù)據(jù)可口可樂(lè)銷(xiāo)量數(shù)據(jù)

    可口可樂(lè),迫切需求可口可樂(lè)近五年銷(xiāo)售額可口可樂(lè)占世界飲料銷(xiāo)售額的44%可口可樂(lè)擁有超過(guò)200億美元的商標(biāo)價(jià)值,可口可樂(lè)占世界飲料銷(xiāo)售額。請(qǐng)問(wèn)有誰(shuí)知道百事可樂(lè)和可口可樂(lè)最近5-10年銷(xiāo)量.....

    問(wèn)答 日期:2023-08-19

  • 時(shí)控開(kāi)關(guān)怎么調(diào)時(shí)間,微電腦時(shí)控開(kāi)關(guān)怎么調(diào)RMD5型上海人民電力電器有限公司時(shí)控開(kāi)關(guān)怎么調(diào)時(shí)間,微電腦時(shí)控開(kāi)關(guān)怎么調(diào)RMD5型上海人民電力電器有限公司

    微電腦時(shí)控開(kāi)關(guān)怎么調(diào)RMD5型上海人民電力電器有限公司2,nkg3時(shí)控開(kāi)關(guān)怎么定時(shí)間3,時(shí)控開(kāi)關(guān)怎么調(diào)時(shí)間4,時(shí)控開(kāi)關(guān)怎么設(shè)置5,kg316t微電腦時(shí)控開(kāi)關(guān)怎么調(diào)時(shí)間6,天正時(shí)控開(kāi)關(guān)的操作方法1,微電腦.....

    問(wèn)答 日期:2023-08-19

  • 電子貨架,電子產(chǎn)品倉(cāng)庫(kù)應(yīng)該用什么貨架電子貨架,電子產(chǎn)品倉(cāng)庫(kù)應(yīng)該用什么貨架

    電子產(chǎn)品倉(cāng)庫(kù)應(yīng)該用什么貨架2,電子標(biāo)簽貨架作用和優(yōu)勢(shì)3,電子貨柜和懸掛式貨架是什么4,電子貨架是什么他的運(yùn)作流程是什么5,使用電子貨架標(biāo)簽有什么好處6,電子貨架標(biāo)簽系統(tǒng)的基本介紹1,電子產(chǎn).....

    問(wèn)答 日期:2023-08-19

  • 無(wú)功功率補(bǔ)償,無(wú)功功率補(bǔ)償是什么意思無(wú)功功率補(bǔ)償,無(wú)功功率補(bǔ)償是什么意思

    無(wú)功功率補(bǔ)償是什么意思2,無(wú)功功率的無(wú)功補(bǔ)償3,節(jié)電器的無(wú)功率補(bǔ)償?shù)脑硎鞘裁?,什么是無(wú)功補(bǔ)償5,無(wú)功功率補(bǔ)償原理6,無(wú)功補(bǔ)償?shù)难a(bǔ)償方式是什么有哪些優(yōu)缺點(diǎn)7,什么是無(wú)功功率補(bǔ)償8,什么是無(wú).....

    問(wèn)答 日期:2023-08-19

  • 電動(dòng)勢(shì),什么是電動(dòng)勢(shì)電動(dòng)勢(shì),什么是電動(dòng)勢(shì)

    什么是電動(dòng)勢(shì)2,什么叫電動(dòng)勢(shì)3,什么是電動(dòng)勢(shì)4,什么是電動(dòng)勢(shì)5,什么是電動(dòng)勢(shì)6,什么是電動(dòng)勢(shì)1,什么是電動(dòng)勢(shì)電動(dòng)勢(shì)是一個(gè)表征電源特征的物理量。定義為把單位正電荷從負(fù)極通過(guò)電源內(nèi)部移到正極時(shí).....

    問(wèn)答 日期:2023-08-19

相關(guān)文章