以上有個問題:為什麼同樣的彙編指令jmp 12345678卻對應不同的機器碼呢?
首先,機器碼e9表明這是乙個近跳轉(near jmp)
jmp分3種:
①短跳轉(short jmp,只能跳轉到256位元組的範圍內),對應機器碼:eb
短跳轉和近跳轉指令中包含的運算元都是相對於(e)ip的偏移。
遠跳轉指令中包含的是目標的絕對位址。
所以短/近跳轉會出現跳至同一目標的指令機器碼不同,不僅會不同,而且應該不同。
而遠跳轉中包含的是絕對位址,因此轉移到同一位址的指令機器碼相同 。
至此,我們知道了跳轉指令所對應的機器碼根據e(ip)計算出來的,那到底是怎麼計算的呢?
比如:上圖的第一條指令:01007568 - e9 0be13311 jmp 12345678
此時的eip=01007568
12345678- 01007568 =1133e110這裡只是指向當前指令的eip處,實際計算跳轉位址要去掉當前指令的長度,當前的跳轉指令需要5個位元組,1133e110-5=1133e10b
注意顛倒順序,高位在後
JMP指令轉換公式推導
看完鬱金香第020課總結 同樣的一句指令 jmp 88881234在不同位置有以下現象 找規律 88881234 010073bb 87879e79 88881234 010073c0 87879e74 88881234 010073c5 87879e6f 因為機器碼 如e9 749e8787 是按...
JMP指令轉換公式推導
看完鬱金香第020課總結 同樣的一句指令 jmp 88881234在不同位置有以下現象 找規律 88881234 010073bb 87879e79 88881234 010073c0 87879e74 88881234 010073c5 87879e6f 因為機器碼 如e9 749e8787 是按...
Fibonacci Numbers公式推導(數論)
題目 fibonacci numbers 簡介 如果斐波那契數小於8位的就輸出這個數,大於8位的就輸出前四位,以及後四位 公式部分 fibonacci求和公式 f n 15 1 52 n 1 52 n a0 0,a 1 1 beginf left n right dfrac left left df...