[C 语言笔记--Day20] Condition Code 帮忙做出 C 语言的 if 语法 II

接续昨天的话题,继续来探讨 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)

<<:  Docker:甚麽是容器?

>>:  Day16-Kubernetes 那些事 - Resource Quotas

[Day 14] Audit perfomance — 模型也要期末稽核༼ಢ_ಢ༽

It is only our conception of time that makes us c...

[神经机器翻译理论与实作] 这个翻译不大正经

前言 也许你会觉得,这个标题下得很神经。没错!因为今天要正式进入新的主题-神经机器翻译。我们今天将会...

我们的基因体时代-AI, Data和生物资讯 Day17-分析定序档案格式SAM, BAM的工具

上一篇我们的基因体时代-AI, Data和生物资讯 Day16- 视觉浏览定序档案格式SAM, BA...

Day 14 event

第~14~天~罗~ 假如有开发过 Web 的都知道, 假如要设定按钮按下後的动作, 可在 html ...

day 26 - 如何知道我交出了一个有品质的系统

这几天纪录下开发流程中可能会考量的项目跟使用工具纪录, 在开发完成到系统交付之後, 又是另一个阶段的...