x86 x64 Call Jmp 指令區別

2021-08-10 23:54:30 字數 708 閱讀 6650

**:

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呼叫約定...