**:
1:call指令和jmp指令的機器碼不同。
2:call指令會對當前指令的下一條指令的位址進行壓棧操作,來實現函式的返回。
相當於push eip+5
jmp ******xx
1:x86
call --- e8/ ff15(但是其他比如 call eax 等是不相同的)
e8 ******xx 其中******xx是偏移位址
計算方法:目標位址-當前位址-5 = 偏移位址
ff15 ******xx 其中******xx是絕對位址(ff15會對當前的這個絕對位址解*號,也就是絕對位址[目標位址])
jmp ---e9 /ff25
e9 ******xx其中******xx是偏移位址
計算方法:目標位址-當前位址-5 = 偏移位址
ff25 ******xx其中******xx是絕對位址(ff15會對當前的這個絕對位址解*號,也就是絕對位址[目標位址])
2:x64
e8 ******xx 其中******xx是偏移位址
計算方法:目標位址-當前位址-5 = 偏移位址
ff15 ******xx 其中******xx是相對位址(ff15會對當前的這個相對位址解*號,也就是相對位址[目標位址])
ff25 ******xx其中******xx是相對位址(ff15會對當前的這個相對位址解*號,也就是相對位址[目標位址])
x86,x64表示什麼含義
簡單的說x86代表32位作業系統 x64代表64位作業系統 windows7 32位和64位的區別主要有以下兩個方面 1.兩種系統對cpu gprs的資料寬度要求不同,乙個是64位,乙個是32位 如果你的cpu是雙核以上,那肯定支援64位作業系統了 2.對記憶體的要求,64位支援4g及以上記憶體的電...
x64 x86有啥區別
下面簡單與大家分享x64和x86的區別。x64 x86有啥區別 這個問題和 32位和64位有啥區別 是一樣的 因為x64其實就是64位,x86其實就是32位 在口語中我們說32位會多於x86,至少這樣更符合中文的語言習慣,所以下文以32位指代x86,以64位指代x64 32位和64位指的是什麼 而不...
X86 X64 函式呼叫約定
c 語言有 cdecl stdcall fastcall naked pascal。c 語言有 cdecl stdcall fastcall naked pascal thiscall,比 c 語言多出一種 thiscall 呼叫方式。下面詳細介紹如上六種呼叫方式 1 cdecl cdecl呼叫約定...