js改變當前位址但是不跳轉 彙編短位址跳轉偏移計算

2021-10-13 16:20:51 字數 1973 閱讀 2595

跳轉指令分三類:

一、無條件跳** jmp;

二、根據 cx、ecx 暫存器的值跳** jcxz(cx 為 0 則跳轉)、jecxz(ecx 為 0 則跳轉);

三、根據 eflags 暫存器的標誌位跳轉

根據標誌位跳轉的指令:

je   ;等於則跳轉

jne ;不等於則跳轉

jz ;為 0 則跳轉

jnz ;不為 0 則跳轉

js ;為負則跳轉

jns ;不為負則跳轉

jc ;進製則跳轉

jnc ;不進製則跳轉

jo ;溢位則跳轉

jno ;不溢位則跳轉

ja ;無符號大於則跳轉

jna ;無符號不大於則跳轉

jae ;無符號大於等於則跳轉

jnae ;無符號不大於等於則跳轉

jg ;有符號大於則跳轉

jng ;有符號不大於則跳轉

jge ;有符號大於等於則跳轉

jnge ;有符號不大於等於則跳轉

jb ;無符號小於則跳轉

jnb ;無符號不小於則跳轉

jbe ;無符號小於等於則跳轉

jnbe ;無符號不小於等於則跳轉

jl ;有符號小於則跳轉

jnl ;有符號不小於則跳轉

jle ;有符號小於等於則跳轉

jnle ;有符號不小於等於則跳轉

jp ;奇偶位置位則跳轉

jnp ;奇偶位清除則跳轉

jpe ;奇偶位相等則跳轉

jpo ;奇偶位不等則跳轉

跳轉指令中字母的含義

n: not

e: equal

a: above

b: below

l: less (little的比較級)

g: greater (great的比較級)

標誌位佔位及其作用

jmp 短跳轉

short jump(短跳轉)機器碼 eb rel8

只能跳轉到256位元組的範圍內 (偏移量在[-128, 127]範圍內)

jmp 近跳轉

near jump(近跳轉)機器碼 e9 rel16/32

可跳至同乙個段的範圍內的位址 (偏移量在[-32k, 32k]範圍內)

jmp 遠跳轉

far jump(遠跳轉)機器碼ea ptr 16:16/32

可跳至任意位址,使用48位/32位全指標 (在不同的**段之間轉移)

要注意的是,短跳轉和近跳轉指令中包含的運算元都是相對於 (e)ip 的偏移,而遠跳轉指令中包含的是目標的絕對位址,所以短 / 近跳轉會出現跳至同一目標的指令機器碼不同,不僅會不同,而且應該不同。而遠跳轉中包含的是絕對位址,因此轉移到同一位址的指令機器碼相同

下面的指令是這樣計算偏移的.

004a2fce    ^ e9 072bfeff   jmp     00485ada

*****===

485ada-4a2fce= fffe2b0c

這裡只是指向當前指令的 ip 處, 實際計算跳轉位址要去 掉當前指令的長度, 當前的跳轉指令需要 5 個位元組, fffe2b0c-5=fffe2b07,所以計算公式就是要跳轉的位址 - 指令所在的位置 - 5 = 機器碼

ajax頁面跳轉並傳值 js不跳轉傳值php

那麼我們如何將js變數的值直接付給php變數呢?第一種方法也是最常見的方法 無重新整理 使用ajax傳參 第二種傳值方式 示例為對js變數進行日期處理 c echo formattime c leadertask info end time 是js變數 將截止時間秒數轉換為日期制 function ...

js獲得頁面當前請求位址

1,設定或獲取物件指定的檔名或路徑。alert window.location.pathname 2,設定或獲取整個 url 為字串。alert window.location.href 3,設定或獲取與 url 關聯的埠號碼。alert window.location.port 4,設定或獲取 u...

怎麼在action中跳轉後改變位址欄目

我在登入的按鈕下寫了跳轉到乙個action的頁面,如下 this.getel dom.action rsgl login.do?username username password password 並在相應的loinaction下接收了相應的引數,如下 struts.action forward ...