|
|
|
@ -10,7 +10,111 @@ tags:
|
|
|
|
|
|
|
|
|
|
A number of instructions operate with respect to the [[registers#Condition Codes|condition code registers]].
|
|
|
|
|
|
|
|
|
|
## CMP and TEST
|
|
|
|
|
> The conventional way to implement conditional operationsis through a conditional transfer of *control*, where the program follows one execution path when a condition holds and another when it does not.
|
|
|
|
|
>
|
|
|
|
|
> An alternate strategy is through a conditional transfer of *data*. This approach computes both outcomes of a conditional operation and then selects one based on whether or not the condition holds.
|
|
|
|
|
|
|
|
|
|
%%ANKI
|
|
|
|
|
Basic
|
|
|
|
|
What does the conditional transfer of control refer to?
|
|
|
|
|
Back: Following one execution path when a condition holds and another when it does not.
|
|
|
|
|
Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016.
|
|
|
|
|
<!--ID: 1727357091064-->
|
|
|
|
|
END%%
|
|
|
|
|
|
|
|
|
|
%%ANKI
|
|
|
|
|
Basic
|
|
|
|
|
What does the conditional transfer of data refer to?
|
|
|
|
|
Back: Moving data between destinations based on a condition.
|
|
|
|
|
Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016.
|
|
|
|
|
<!--ID: 1727357091070-->
|
|
|
|
|
END%%
|
|
|
|
|
|
|
|
|
|
%%ANKI
|
|
|
|
|
Cloze
|
|
|
|
|
With respect to assembly, we usually discuss either conditional transfer of {1:control} or {1:data}.
|
|
|
|
|
Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016.
|
|
|
|
|
<!--ID: 1727357091074-->
|
|
|
|
|
END%%
|
|
|
|
|
|
|
|
|
|
%%ANKI
|
|
|
|
|
Basic
|
|
|
|
|
What does "conditional transfer" refer to in the context of control?
|
|
|
|
|
Back: The movement of the PC to a different address depending on conditions.
|
|
|
|
|
Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016.
|
|
|
|
|
<!--ID: 1727357091079-->
|
|
|
|
|
END%%
|
|
|
|
|
|
|
|
|
|
%%ANKI
|
|
|
|
|
Basic
|
|
|
|
|
What does "conditional transfer" refer to in the context of data?
|
|
|
|
|
Back: The actual moving of data between destinations if a condition is satisfied.
|
|
|
|
|
Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016.
|
|
|
|
|
<!--ID: 1727357091083-->
|
|
|
|
|
END%%
|
|
|
|
|
|
|
|
|
|
%%ANKI
|
|
|
|
|
Basic
|
|
|
|
|
*Why* might conditional transfers of control be less performant than that of data?
|
|
|
|
|
Back: Branch prediction penalties may be more expensive than computing both branches' instructions.
|
|
|
|
|
Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016.
|
|
|
|
|
<!--ID: 1727357091088-->
|
|
|
|
|
END%%
|
|
|
|
|
|
|
|
|
|
%%ANKI
|
|
|
|
|
Basic
|
|
|
|
|
When can we not use conditional transfer of data?
|
|
|
|
|
Back: When a branch may yield an error or some other side effect.
|
|
|
|
|
Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016.
|
|
|
|
|
<!--ID: 1727357091092-->
|
|
|
|
|
END%%
|
|
|
|
|
|
|
|
|
|
%%ANKI
|
|
|
|
|
Basic
|
|
|
|
|
The following pseudocode is a demonstration of the conditional transfer of what?
|
|
|
|
|
```
|
|
|
|
|
v = then-expr;
|
|
|
|
|
ve = else-expr;
|
|
|
|
|
t = test-expr;
|
|
|
|
|
if (!t) v = ve;
|
|
|
|
|
```
|
|
|
|
|
Back: Data.
|
|
|
|
|
Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016.
|
|
|
|
|
<!--ID: 1727357091096-->
|
|
|
|
|
END%%
|
|
|
|
|
|
|
|
|
|
%%ANKI
|
|
|
|
|
Basic
|
|
|
|
|
The following pseudocode is a demonstration of the conditional transfer of what?
|
|
|
|
|
```
|
|
|
|
|
if (!test-expr)
|
|
|
|
|
goto false;
|
|
|
|
|
v = then-expr;
|
|
|
|
|
goto done;
|
|
|
|
|
false:
|
|
|
|
|
v = else-expr;
|
|
|
|
|
done:
|
|
|
|
|
```
|
|
|
|
|
Back: Control.
|
|
|
|
|
Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016.
|
|
|
|
|
<!--ID: 1727357091101-->
|
|
|
|
|
END%%
|
|
|
|
|
|
|
|
|
|
%%ANKI
|
|
|
|
|
Basic
|
|
|
|
|
*Why* couldn't we use conditional transfer of data with the following expression?
|
|
|
|
|
```c
|
|
|
|
|
xp ? *xp : 0
|
|
|
|
|
```
|
|
|
|
|
Back: Dereferencing `xp` may throw a null pointer dereferencing error.
|
|
|
|
|
Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016.
|
|
|
|
|
Tags: c17
|
|
|
|
|
<!--ID: 1727357091105-->
|
|
|
|
|
END%%
|
|
|
|
|
|
|
|
|
|
## Instructions
|
|
|
|
|
|
|
|
|
|
### CMP and TEST
|
|
|
|
|
|
|
|
|
|
| Instruction | Operands | Based On | Description |
|
|
|
|
|
| ------------ | ---------- | --------------------- | ----------- |
|
|
|
|
@ -96,7 +200,7 @@ Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Program
|
|
|
|
|
<!--ID: 1717941416513-->
|
|
|
|
|
END%%
|
|
|
|
|
|
|
|
|
|
## SET
|
|
|
|
|
### SET
|
|
|
|
|
|
|
|
|
|
The description of the `SET` commands apply to the case of a comparison instruction. That is, the condition codes are set according to computation `t = a - b`, where `t`, `a`, and `b` may be interpreted as signed or unsigned depending on the `SET` instruction invoked.
|
|
|
|
|
|
|
|
|
@ -109,7 +213,7 @@ The description of the `SET` commands apply to the case of a comparison instruct
|
|
|
|
|
| `setl` | `setnge` | `SF ^ OF` | Less (signed `<`) |
|
|
|
|
|
| `setle` | `setng` | <code>(SF ^ OF) \| ZF</code> | Less or equal (signed `<=`) |
|
|
|
|
|
| `setg` | `setnle` | `~(SF ^ OF) & ~ZF` | Greater (signed `>`) |
|
|
|
|
|
| `setge` | `setnl` | `~(SF ^ OF)` | Greater or equal (signed `<=`) |
|
|
|
|
|
| `setge` | `setnl` | `~(SF ^ OF)` | Greater or equal (signed `>=`) |
|
|
|
|
|
| `setb` | `setnae` | `CF` | Below (unsigned `<`) |
|
|
|
|
|
| `setbe` | `setna` | <code>CF \| ZF</code> | Below or equal (unsigned `<=`) |
|
|
|
|
|
| `seta` | `setnbe` | `~CF & ~ZF` | Above (unsigned `>`) |
|
|
|
|
@ -602,6 +706,247 @@ Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Program
|
|
|
|
|
<!--ID: 1723471919361-->
|
|
|
|
|
END%%
|
|
|
|
|
|
|
|
|
|
### JMP
|
|
|
|
|
|
|
|
|
|
Jump instructions are categorized as either **direct** or **indirect**. Direct jump instructions specify a label whereas indirect jump instructions specify a `*` followed by an memory operand.
|
|
|
|
|
|
|
|
|
|
| Instruction | Synonym | Jump Condition | Description |
|
|
|
|
|
| ----------------- | -------- | ---------------------------- | ------------------------------ |
|
|
|
|
|
| `jmp` *Label* | - | 1 | Direct jump |
|
|
|
|
|
| `jmp` *\*Operand* | - | 1 | Indirect jump |
|
|
|
|
|
| `je` *Label* | `jz` | `ZF` | Equal / zero |
|
|
|
|
|
| `jne` *Label* | `jnz` | `~ZF` | Not equal / not zero |
|
|
|
|
|
| `js` *Label* | - | `SF` | Negative |
|
|
|
|
|
| `jns` *Label* | - | `~SF` | Nonnegative |
|
|
|
|
|
| `jl` *Label* | `jnge` | `SF ^ OF` | Less (signed `<`) |
|
|
|
|
|
| `jle` *Label* | `jng` | <code>(SF ^ OF) \| ZF</code> | Less or equal (signed `<=`) |
|
|
|
|
|
| `jg` *Label* | `jnle` | `~(SF ^ OF) & ~ZF` | Greater (signed `>`) |
|
|
|
|
|
| `jge` *Label* | `jnl` | `~(SF ^ OF)` | Greater or equal (signed `>=`) |
|
|
|
|
|
| `jb` *Label* | `jnae` | `CF` | Below (unsigned `<`) |
|
|
|
|
|
| `jbe` *Label* | `jna` | <code>CF \| ZF</code> | Below or equal (unsigned `<=`) |
|
|
|
|
|
| `ja` *Label* | `jnbe` | `~CF & ~ZF` | Above (unsigned `>`) |
|
|
|
|
|
| `jae` *Label* | `jnb` | `~CF` | Above or equal (unsigned `>=`) |
|
|
|
|
|
|
|
|
|
|
%%ANKI
|
|
|
|
|
Basic
|
|
|
|
|
How is the operand of a direct jump formatted?
|
|
|
|
|
Back: As a label.
|
|
|
|
|
Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016.
|
|
|
|
|
<!--ID: 1727270613515-->
|
|
|
|
|
END%%
|
|
|
|
|
|
|
|
|
|
%%ANKI
|
|
|
|
|
Basic
|
|
|
|
|
How is the operand of an indirect jump formatted?
|
|
|
|
|
Back: As an `*` followed by a register or memory address.
|
|
|
|
|
Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016.
|
|
|
|
|
<!--ID: 1727270613523-->
|
|
|
|
|
END%%
|
|
|
|
|
|
|
|
|
|
%%ANKI
|
|
|
|
|
Basic
|
|
|
|
|
Is the following considered a direct or indirect jump?
|
|
|
|
|
```x86
|
|
|
|
|
jmp *(%rax)
|
|
|
|
|
```
|
|
|
|
|
Back: Indirect.
|
|
|
|
|
Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016.
|
|
|
|
|
<!--ID: 1727270613529-->
|
|
|
|
|
END%%
|
|
|
|
|
|
|
|
|
|
%%ANKI
|
|
|
|
|
Basic
|
|
|
|
|
Is the following considered a direct or indirect jump?
|
|
|
|
|
```x86
|
|
|
|
|
jmp .L1
|
|
|
|
|
```
|
|
|
|
|
Back: Direct.
|
|
|
|
|
Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016.
|
|
|
|
|
<!--ID: 1727270613532-->
|
|
|
|
|
END%%
|
|
|
|
|
|
|
|
|
|
%%ANKI
|
|
|
|
|
Basic
|
|
|
|
|
Is the following considered a direct or indirect jump?
|
|
|
|
|
```x86
|
|
|
|
|
jmp *%rax
|
|
|
|
|
```
|
|
|
|
|
Back: Indirect.
|
|
|
|
|
Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016.
|
|
|
|
|
<!--ID: 1727270613535-->
|
|
|
|
|
END%%
|
|
|
|
|
|
|
|
|
|
%%ANKI
|
|
|
|
|
Basic
|
|
|
|
|
Is the following considered a direct or indirect jump?
|
|
|
|
|
```x86
|
|
|
|
|
jg *%rax
|
|
|
|
|
```
|
|
|
|
|
Back: N/A. This is not a valid instruction.
|
|
|
|
|
Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016.
|
|
|
|
|
<!--ID: 1727270613542-->
|
|
|
|
|
END%%
|
|
|
|
|
|
|
|
|
|
%%ANKI
|
|
|
|
|
Basic
|
|
|
|
|
What is a jump target?
|
|
|
|
|
Back: An address of some destination instruction specified by a jump instruction.
|
|
|
|
|
Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016.
|
|
|
|
|
<!--ID: 1727270613546-->
|
|
|
|
|
END%%
|
|
|
|
|
|
|
|
|
|
%%ANKI
|
|
|
|
|
Basic
|
|
|
|
|
What restriction is enforced on the operand of nonconditional jump instructions?
|
|
|
|
|
Back: N/A.
|
|
|
|
|
Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016.
|
|
|
|
|
<!--ID: 1727270613554-->
|
|
|
|
|
END%%
|
|
|
|
|
|
|
|
|
|
%%ANKI
|
|
|
|
|
Basic
|
|
|
|
|
What restriction is enforced on the operand of conditional jump instructions?
|
|
|
|
|
Back: Conditional jumps can only be direct.
|
|
|
|
|
Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016.
|
|
|
|
|
<!--ID: 1727270613558-->
|
|
|
|
|
END%%
|
|
|
|
|
|
|
|
|
|
%%ANKI
|
|
|
|
|
Basic
|
|
|
|
|
A PC-relative jump encoding encodes the difference between what two addresses?
|
|
|
|
|
Back: The jump target and that of the instruction immediately following the jump.
|
|
|
|
|
Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016.
|
|
|
|
|
<!--ID: 1727270613567-->
|
|
|
|
|
END%%
|
|
|
|
|
|
|
|
|
|
%%ANKI
|
|
|
|
|
Basic
|
|
|
|
|
What is "PC" in "PC-relative" short for?
|
|
|
|
|
Back: **P**rogram **C**ounter.
|
|
|
|
|
Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016.
|
|
|
|
|
<!--ID: 1727270613575-->
|
|
|
|
|
END%%
|
|
|
|
|
|
|
|
|
|
%%ANKI
|
|
|
|
|
Basic
|
|
|
|
|
How large is a PC-relative jump offset encoding?
|
|
|
|
|
Back: 1, 2, or 4 bytes.
|
|
|
|
|
Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016.
|
|
|
|
|
<!--ID: 1727270613579-->
|
|
|
|
|
END%%
|
|
|
|
|
|
|
|
|
|
%%ANKI
|
|
|
|
|
Cloze
|
|
|
|
|
A {PC-relative} jump encoding contrasts an {absolute} jump encoding.
|
|
|
|
|
Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016.
|
|
|
|
|
<!--ID: 1727270613590-->
|
|
|
|
|
END%%
|
|
|
|
|
|
|
|
|
|
%%ANKI
|
|
|
|
|
Basic
|
|
|
|
|
How large is an absolute jump address encoding?
|
|
|
|
|
Back: 4 bytes.
|
|
|
|
|
Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016.
|
|
|
|
|
<!--ID: 1727270613596-->
|
|
|
|
|
END%%
|
|
|
|
|
|
|
|
|
|
%%ANKI
|
|
|
|
|
Basic
|
|
|
|
|
*Why* is PC-relative addressing performed relative to the instruction after a jump?
|
|
|
|
|
Back: It is convention to update the PC as the first step of executing any instruction.
|
|
|
|
|
Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016.
|
|
|
|
|
<!--ID: 1727270613602-->
|
|
|
|
|
END%%
|
|
|
|
|
|
|
|
|
|
%%ANKI
|
|
|
|
|
Basic
|
|
|
|
|
*Why* is PC-relative encoding more compact than absolute encoding?
|
|
|
|
|
Back: Offsets may be expressable in 1 or 2 bytes instead of 4.
|
|
|
|
|
Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016.
|
|
|
|
|
<!--ID: 1727270613607-->
|
|
|
|
|
END%%
|
|
|
|
|
|
|
|
|
|
%%ANKI
|
|
|
|
|
Basic
|
|
|
|
|
*Why* is PC-relative encoding more portable than absolute encoding?
|
|
|
|
|
Back: Because object code can shift position in memory without alteration.
|
|
|
|
|
Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016.
|
|
|
|
|
<!--ID: 1727270613613-->
|
|
|
|
|
END%%
|
|
|
|
|
|
|
|
|
|
%%ANKI
|
|
|
|
|
Basic
|
|
|
|
|
What is the nonconditional direct jump instruction?
|
|
|
|
|
Back: `jmp[bwlq]`
|
|
|
|
|
Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016.
|
|
|
|
|
<!--ID: 1727270613618-->
|
|
|
|
|
END%%
|
|
|
|
|
|
|
|
|
|
%%ANKI
|
|
|
|
|
Basic
|
|
|
|
|
What is the nonconditional indirect jump instruction?
|
|
|
|
|
Back: `jmp[bwlq]`
|
|
|
|
|
Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016.
|
|
|
|
|
<!--ID: 1727270613624-->
|
|
|
|
|
END%%
|
|
|
|
|
|
|
|
|
|
%%ANKI
|
|
|
|
|
Basic
|
|
|
|
|
Conditional transfer of control usually involves what instructon set?
|
|
|
|
|
Back: JMP
|
|
|
|
|
Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016.
|
|
|
|
|
<!--ID: 1727357091109-->
|
|
|
|
|
END%%
|
|
|
|
|
|
|
|
|
|
### CMOV
|
|
|
|
|
|
|
|
|
|
Like [[access#MOV|MOV]] instructions, but with the data transfer only happening if the move condition is satisfied.
|
|
|
|
|
|
|
|
|
|
| Instruction | Synonym | Move Condition | Description |
|
|
|
|
|
| ----------- | ---------- | ---------------------------- | ------------------------------ |
|
|
|
|
|
| `cmove` | `cmovz` | `ZF` | Equal / zero |
|
|
|
|
|
| `cmovene` | `cmovnz` | `~ZF` | Not equal / not zero |
|
|
|
|
|
| `cmovs` | - | `SF` | Negative |
|
|
|
|
|
| `cmovns` | - | `~SF` | Nonnegative |
|
|
|
|
|
| `cmovl` | `cmovnge` | `SF ^ OF` | Less (signed `<`) |
|
|
|
|
|
| `cmovle` | `cmovng` | <code>(SF ^ OF) \| ZF</code> | Less or equal (signed `<=`) |
|
|
|
|
|
| `cmovg` | `cmovenle` | `~(SF ^ OF) & ~ZF` | Greater (signed `>`) |
|
|
|
|
|
| `cmovge` | `cmovnl` | `~(SF ^ OF)` | Greater or equal (signed `>=`) |
|
|
|
|
|
| `cmovb` | `cmovnae` | `CF` | Below (unsigned `<`) |
|
|
|
|
|
| `cmovbe` | `cmovna` | <code>CF \| ZF</code> | Below or equal (unsigned `<=`) |
|
|
|
|
|
| `cmova` | `cmovnbe` | `~CF & ~ZF` | Above (unsigned `>`) |
|
|
|
|
|
| `cmovae` | `cmovnb` | `~CF` | Above or equal (Unsigned `>=`) |
|
|
|
|
|
|
|
|
|
|
%%ANKI
|
|
|
|
|
Cloze
|
|
|
|
|
{1:MOV} is to {2:unconditional} whereas {2:CMOV} is to {1:conditional}.
|
|
|
|
|
Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016.
|
|
|
|
|
<!--ID: 1727357091113-->
|
|
|
|
|
END%%
|
|
|
|
|
|
|
|
|
|
%%ANKI
|
|
|
|
|
Basic
|
|
|
|
|
Conditional transfer of data usually involves what instructon set?
|
|
|
|
|
Back: CMOV
|
|
|
|
|
Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016.
|
|
|
|
|
<!--ID: 1727357091118-->
|
|
|
|
|
END%%
|
|
|
|
|
|
|
|
|
|
%%ANKI
|
|
|
|
|
Basic
|
|
|
|
|
What is instruction `cmove` an acronym for?
|
|
|
|
|
Back: **C**onditional **mov**e **e**qual.
|
|
|
|
|
Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016.
|
|
|
|
|
<!--ID: 1727357091124-->
|
|
|
|
|
END%%
|
|
|
|
|
|
|
|
|
|
%%ANKI
|
|
|
|
|
Cloze
|
|
|
|
|
Conditional transfer of {1:control} is to {2:JMP} and {2:data} is to {1:CMOV}.
|
|
|
|
|
Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016.
|
|
|
|
|
<!--ID: 1727357091131-->
|
|
|
|
|
END%%
|
|
|
|
|
|
|
|
|
|
## Bibliography
|
|
|
|
|
|
|
|
|
|
* Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016.
|
|
|
|
|