簡體   English   中英

具有偏移量的MOV指令

[英]MOV instruction with an offset

這是核心文件中的匯編代碼行。

0x00002ac8c957012d <+45>:    mov    0x8(%rsp), %rsi

我注意到注冊表rsp位於以下位置,因此我使用Examine命令查看內容以及16個其他對象/字節。

> x/16x 0x2acd5752a610
0x2acd5752a610: 0x70   0xa6   0x11   0xff   0x29   0xcd   0x22   0x00
0x2acd5752a618: 0x33   0xee   0xf1   0xa9   0xb2   0xcc   0x34   0x76

當計算出0x8的偏移量時,它是基於0導致值0x33還是只是從開始以1到8進行計數而導致值是0x00?

AT&T語法令人討厭,這讓您感到困惑。

在Intel預期的語法mov 0x8(%rsp), %rsi轉換為:

mov rsi,[rsp+8]

這意味着用地址[rsp+8]的8個字節填充寄存器rsi的8個字節。
請注意, rsp是一個64位(8字節)寄存器,一次可處理8個字節。
我們不知道rsp的值是什么,但是我們確實知道rsp是堆棧指針,而+8表示我們將地址移到堆棧指針上方8個字節,或者是堆棧上第二個最近壓入的值(因為堆棧向下生長)。

該指令正在棧內潛入一個高峰:-)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM