[英]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.