午夜福利三级理论电影,试看60秒做受小视频,婷婷色爱区综合五月激情韩国,无码国产精品一区二区高潮,无码一区二区三区视频

域名綜合信息查詢...
  • 綜合
  • Whois
×
歷史記錄
首頁 > 常見問題 > 正文

linux中x64和x86的區(qū)別有哪些?區(qū)別對(duì)比

發(fā)布時(shí)間:2022-11-23 10:08:26 來源:互聯(lián)網(wǎng) 作者:zn 點(diǎn)擊量:3163

  linux中x64和x86的區(qū)別其實(shí)有很多,比如在寄存器和匯編指令等,接下來,我們來重點(diǎn)講解一下linux中x64和x86的區(qū)別有哪些?

linux中x64和x86的區(qū)別有哪些?區(qū)別對(duì)比

  1:寄存器分配的不同

  (1)64位有16個(gè)寄存器,32位只有8個(gè)。但是32位前8個(gè)都有不同的命名,分別是e _ ,而64位前8個(gè)使用了r代替e,也就是r _。e開頭的寄存器命名依然可以直接運(yùn)用于相應(yīng)寄存器的低32位,而剩下的寄存器名則是從r8 - r15,其低位分別用d、w、b指定長度;

  (2)32位使用棧幀來作為傳遞的參數(shù)的保存位置,而64位使用寄存器,分別用rdi,rsi,rdx,rcx,r8,r9作為第1-6個(gè)參數(shù),rax作為返回值;

  (3)64位沒有棧幀的指針,32位用ebp作為棧幀指針,64位取消了這個(gè)設(shè)定,rbp作為通用寄存器使用;

  (4)64位支持一些形式的以PC相關(guān)的尋址,而32位只有在jmp的時(shí)候才會(huì)用到這種尋址方式;

  2:(新增)匯編指令的不同

  mov、push、pop擴(kuò)展了movq系列的mov和pushq以及popq用來操作quad word。

  3:函數(shù)調(diào)用的不同

  (1)x_64的參數(shù)通過寄存器傳遞(見前文);

  callq 在棧里存放一個(gè)8位的返回地址;

  (2)許多函數(shù)不再有棧幀,只有無法將所有本地變量放在寄存器里的才會(huì)在棧上分配空間;

  (3)函數(shù)可以獲取到棧至多128字節(jié)的空間。這樣函數(shù)就可以在不更改棧指針的情況下在棧上存儲(chǔ)信息(也就是說,可以提前用rsp以下的128字節(jié)空間,這段空間被稱為red zone,在x86-64里,時(shí)刻可用);

  (4)不再有棧幀指針,現(xiàn)在棧的位置和棧指針相關(guān)。大多數(shù)函數(shù)在調(diào)用的一開始就分配全部所需??臻g,之后保持棧指針不改變;

  (5)一些寄存器被設(shè)計(jì)成為被調(diào)用者-存儲(chǔ)的寄存器,這些必須在需要改變他們值的時(shí)候存儲(chǔ)他們并且之后恢復(fù)他們。

  4:參數(shù)傳遞的不同

  (1)6個(gè)寄存器用來傳遞參數(shù)(見前文);

  (2)剩下的寄存器按照之前的方式傳遞(不過是與rsp相關(guān)了,ebp不再作為棧幀指針,并且從rsp開始第7個(gè)參數(shù),rsp+8開始第8個(gè),以此類推);

  (3)調(diào)用時(shí),rsp向下移動(dòng)8位(存入返回地址),寄存器參數(shù)無影響,第7個(gè)及之后的參數(shù)現(xiàn)在則是從rsp+8開始第7個(gè),rsp+16開始第8個(gè),以此類推;

  5:棧幀的不同

  很多情況下不再需要棧幀,比如在沒有調(diào)用別的函數(shù),且寄存器足以存儲(chǔ)參數(shù),那么就只需要存儲(chǔ)返回地址即可。

  需要棧幀的情況:

  (1)本地變量太多,寄存器不夠;

  (2)一些本地變量是數(shù)組或結(jié)構(gòu)體;

  (3)函數(shù)使用了取地址操作符來計(jì)算一個(gè)本地變量的地址;

  (4)函數(shù)必須用棧傳送一些參數(shù)給另外一個(gè)函數(shù);

  (5)函數(shù)需要保存一些由被調(diào)用者存儲(chǔ)的寄存器的狀態(tài)(以便于恢復(fù));

  但是現(xiàn)在的棧幀經(jīng)常是固定大小的,在函數(shù)調(diào)用的最開始就被設(shè)定,在整個(gè)調(diào)用期間,棧頂指針保持不變,這樣就可以通過對(duì)其再加上偏移量來對(duì)相應(yīng)的值進(jìn)行操作,于是EBP就不再需要作為棧幀指針了。雖然很多時(shí)候我們認(rèn)為沒有“棧幀”,但是每次函數(shù)調(diào)用都一定有一個(gè)返回地址被壓棧,我們可以也認(rèn)為這一個(gè)地址就是一個(gè)“棧幀”,因?yàn)樗脖4媪苏{(diào)用者的狀態(tài)。

  6:運(yùn)算速度不同

  64位cpu的數(shù)據(jù)寬度為64位,64位指令集可以運(yùn)行64位數(shù)據(jù)指令,也就是說處理器一次可提取64位數(shù)據(jù),比32位提高了一倍,理論上性能會(huì)相應(yīng)提升1倍。

  以上就是對(duì)linux中x64和x86的區(qū)別有哪些?區(qū)別對(duì)比的全部介紹,如果您想了解更多有關(guān)其他常見問題,請及時(shí)關(guān)注我們。

域名注冊價(jià)格:http://m.y447.cn/regym.htm?t=seo_adzcw
域名一口價(jià)交易:http://m.y447.cn/ykj/?t=seo_admm
過期域名查詢:http://m.y447.cn/gq/?t=seo_adqz
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享網(wǎng)絡(luò)內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:400-997-2996;郵箱:service@Juming.com。本站原創(chuàng)內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明出處:聚名網(wǎng) linux中x64和x86的區(qū)別有哪些?區(qū)別對(duì)比
關(guān)鍵詞: linuxx64x86
熱門競價(jià) 更多>
推薦一口價(jià) 更多>

登錄聚名,您可以享受以下權(quán)益:

立即登錄/注冊