iT邦幫忙

2021 iThome 鐵人賽

DAY 20
0
自我挑戰組

C 語言筆記系列 第 20

[C 語言筆記--Day20] Condition Code 幫忙做出 C 語言的 if 語法 II

  • 分享至 

  • xImage
  •  

接續昨天的話題,繼續來探討 condition code

昨天說到了指令的運算結果會有改變 condition code

而今天就來說其中兩個會影響 condition code 的 instruction

以及說明 condition code 被改變之後,又要如何使用他

以 x86-64 的架構為例

大綱

  1. 其中兩個會影響 condition code 的 instruction
  2. 如何使用 condition code
  3. 參考資料

1. 其中兩個會影響 condition code 的 instruction

instruction | based on | description
---+---+---
CMP S1, S2 | S2 - S1 | Compare
TEST S1, S2 | S1 & S2 | Test
其中 CMP 又可以有 cmpb, cmpw, cmpl, cmpq, 這四種變形

分別對應 byte(8-bit), word(16-bit), double word(32-bit), quad word(64-bit) 的版本

同理,TEST 也有 testb, testw, testl, testq,這四種變形

同樣分別對應 byte(8-bit), word(16-bit), double word(32-bit), quad word(64-bit) 的版本

2. 如何使用 condition code

condition code 有以下幾種功能:

  • 根據某些 condition code 來決定要不要把某個 byte 設為 0 或設為 1
  • 根據某些 condition code 來決定要不要執行 jump (用這個特性可以實作出 C 語言中的 if
  • 根據某些 condition code 來決定要不要執行資料的搬移

而具體對應到哪些 instruction 就留到後面幾天再說好了

3. 參考資料

  • Computer Systems: A Programmer's Perspective, 3/E (CS:APP3e)

上一篇
[C 語言筆記--Day19] Condition Code 幫忙做出 C 語言的 if 語法
下一篇
[C 語言筆記--Day20] 解題紀錄 10190 Divide, But Not Quite Conquer!
系列文
C 語言筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言