隨筆三十三 跳轉指令及其編碼

2021-06-07 18:49:54 字數 1059 閱讀 7746

跳轉指令有兩種跳轉方式:

1)直接跳轉 。即跳轉目標是作為指令的一部分編碼的;

2)間接跳轉。即跳轉目標是從暫存器或儲存器位置中讀出的。

直接跳轉是給出乙個標號作為跳轉目標的,間接跳轉的寫法是『*』 後面跟乙個運算元指示符。

表中所示的其他跳轉指令都是有條件的——它們根據條件碼的某個組合,或者跳轉,或者繼續執行**序列中的下一條指令。

指令同義名

跳轉條件

描述jmp   label

jmp   *operand

je     label

jne    label

jg     label

jge    label

jl     label

jle    label

ja     label

jae    label

jb     label

jbe    label

jzjnz

jnle

jnl  

jnge

jngjnbe

jnbjnae

jnazf

~zf~(sf ^ of)& ~zf

~(sf ^ of)

sf ^ of

(sf ^ of)| zf

~cf ^ ~zf

~cfcf

cf | zf

直接跳轉

間接跳轉

相等/零

不相等/非零

大於(有符號》)

大於或等於(有符號》=)

小於(有符號<)

小於或等於(有符號<=)

超過(無符號》)

超過或相等(無符號》=)

低於(無符號<)

低於或等於(無符號<=)

跳轉指令有幾種不同的編碼,但是最常用的都是 pc 相關的(pc-relative,pc,程式計數器)。它們會將目標指令的位址與緊跟在跳轉指令後面的那條指令的位址之間的差作為編碼。這些位址偏移量可以編碼為1、2 或者 4 個位元組。第二種編碼方式是給出 「絕對」 位址,用 4 個位元組直接指定目標。彙編器和鏈結器會選擇適當的跳轉目的編碼。

演算法(三十三)

1 判定字串b是否可由字串a變換的來 比如 abccd acbcd 可以。public boolean fun string a,string b for int i 0 i2.給定形如pattern aabbc city 北京 北京 上海 上海 蓬萊 兩個字串,這樣的pattern和city之間是...

三十三 JWT簡介

json web token 縮寫 jwt 是目前最流行的跨域認證解決方案,本文介紹它的原理和用法。div div id more class asset more 一 跨域認證的問題 網際網路服務離不開使用者認證。一般流程是下面這樣。1 使用者向伺服器傳送使用者名稱和密碼。2 伺服器驗證通過後,在...

CUDA學習(三十三)

最大化指令吞吐量 為了最大化指令吞吐量,應用程式應 在本節中,吞吐量以每個多處理器每個時鐘週期的操作次數給出。對於32的變形大小,一條指令對應於32個操作,所以如果n是每個時鐘週期的運算元,則指令吞吐量是每個時鐘週期n 32條指令。所有的吞吐量都是針對乙個多處理器的。它們必須乘以裝置中的多處理器數量...