40 KiB
title | TARGET DECK | FILE TAGS | tags | |
---|---|---|---|---|
Condition Operations | Obsidian::STEM | x86-64 |
|
Overview
A number of instructions operate with respect to the registers#Condition Codes.
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.
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.
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.
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.
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.
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.
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.
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.
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.
END%%
%%ANKI Basic Why couldn't we use conditional transfer of data with the following expression?
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
END%%
Instructions
CMP and TEST
Instruction | Operands | Based On | Description |
---|---|---|---|
cmp[bwlq] |
S_1, S_2 |
S_2 - S_1 |
Compare |
test[bwlq] |
S_1, S_2 |
S_1 \mathop{\&} S_2 |
Test |
%%ANKI
Basic
What four variants do CMP
instructions take on in x86-64?
Back: cmpb
, cmpw
, cmpl
, cmpq
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Basic
What instruction class is CMP
"based" on?
Back: SUB
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Basic
What registers does CMP
affect?
Back: The condition code registers.
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Basic
What distinguishes CMP
from SUB
?
Back: CMP
does not update any destinations.
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Basic
How does Bryant et al. recommend reading CMP
instructions?
Back: As subtracting the first operand from the second.
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Basic
What instruction class is TEST
"based" on?
Back: AND
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Basic
What distinguishes TEST
from AND
?
Back: TEST
does not update any destinations.
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Basic
What four variants do TEST
instructions take on in x86-64?
Back: testb
, testw
, testl
, testq
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Cloze
{1:CMP
} is to {2:SUB
} as {2:TEST
} is to {1:AND
}.
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Basic
What registers does TEST
affect?
Back: The condition code registers.
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
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.
Instruction | Synonym | Evaluation | Description |
---|---|---|---|
sete |
setz |
ZF |
Equal / zero |
setne |
setnz |
~ZF |
Not equal / not zero |
sets |
SF |
Negative | |
setns |
~SF |
Nonnegative | |
setl |
setnge |
SF ^ OF |
Less (signed < ) |
setle |
setng |
(SF ^ OF) | ZF |
Less or equal (signed <= ) |
setg |
setnle |
~(SF ^ OF) & ~ZF |
Greater (signed > ) |
setge |
setnl |
~(SF ^ OF) |
Greater or equal (signed >= ) |
setb |
setnae |
CF |
Below (unsigned < ) |
setbe |
setna |
CF | ZF |
Below or equal (unsigned <= ) |
seta |
setnbe |
~CF & ~ZF |
Above (unsigned > ) |
setae |
setnb |
~CF |
Above or equal (unsigned >= ) |
Note how the other condition code evaluations are easy to derive from setl
and setb
.
%%ANKI
Basic
What arithmetic computation is a SET
instruction's description based on?
Back: t = a - b
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Basic
What value does a SET
instruction assign to a destination?
Back: 0
or 1
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Basic
How large is the destination of a SET
instruction?
Back: A single byte.
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Basic
What is q
in the cmpq
instruction short for?
Back: Quad word.
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Basic
What is e
in the sete
instruction short for?
Back: Equal.
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Basic
What is z
in the setz
instruction short for?
Back: Zero.
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Cloze
{sete
} is a synonym for {setz
}.
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Basic
What is ne
in the setne
instruction short for?
Back: Not equal.
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Basic
What is nz
in the setnz
instruction short for?
Back: Not zero.
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Cloze
{setne
} is a synonym for {setnz
}.
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Basic
What is s
in the sets
instruction short for?
Back: Signed.
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Basic
What is ns
in the setns
instruction short for?
Back: Not signed.
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Cloze
{set[ez]
} is to {ZF
} whereas {sets
} is to {SF
}.
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Basic
What condition code(s) does sete
refer to?
Back: ZF
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Basic
In terms of condition codes, what value does setz
put in its specified destination?
Back: ZF
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Basic
What condition code(s) does setnz
refer to?
Back: ZF
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Basic
In terms of condition codes, what value does setne
put in its specified destination?
Back: ~ZF
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Basic
What condition code(s) does sets
refer to?
Back: SF
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Basic
In terms of condition codes, what value does sets
put in its specified destination?
Back: SF
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Basic
What condition code(s) does setns
refer to?
Back: SF
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Basic
In terms of condition codes, what value does setns
put in its specified destination?
Back: ~SF
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Basic
What is l
in the setl
instruction short for?
Back: Less.
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Cloze
{setl
} is a synonym for {setnge
}.
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Basic
What is nge
in the setnge
instruction short for?
Back: Not greater or equal.
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Basic
What is b
in the setb
instruction short for?
Back: Below.
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Cloze
{setb
} is a synonym for {setnae
}.
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Basic
What is nae
in the setnae
instruction short for?
Back: Not above or equal.
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Cloze
{1:setl
} is to {2:signed} integers whereas {2:setb
} is to {1:unsigned} integers.
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Cloze
{1:setnae
} is to {2:unsigned} integers whereas {2:setnge
} is to {1:signed} integers.
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Basic
What condition code(s) does setl
refer to?
Back: SF
and OF
.
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Basic
In terms of condition codes, what value does setl
put in its specified destination?
Back: SF ^ OF
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Basic
What condition code(s) does setb
refer to?
Back: CF
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Basic
In terms of condition codes, what value does setb
put in its specified destination?
Back: CF
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Basic
What is le
in the setle
instruction short for?
Back: Less or equal.
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Cloze
{setle
} is a synonym for {setng
}.
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Cloze
{1:setle
} is to {2:signed} integers whereas {2:setbe
} is to {1:unsigned} integers.
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Cloze
{1:setna
} is to {2:unsigned} integers whereas {2:setng
} is to {1:signed} integers.
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Basic
What condition code(s) does setle
refer to?
Back: SF
, OF
, and ZF
.
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Basic
In terms of condition codes, what value does setle
put in its specified destination?
Back: (SF ^ OF) | ZF
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Basic
What is g
in the setg
instruction short for?
Back: Greater.
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Cloze
{setg
} is a synonym for {setnle
}.
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Cloze
{1:setg
} is to {2:signed} integers whereas {2:seta
} is to {1:unsigned} integers.
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Cloze
{1:setnle
} is to {2:signed} integers whereas {2:setnbe
} is to {1:unsigned} integers.
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Basic
What condition code(s) does setg
refer to?
Back: SF
, OF
, and ZF
.
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Basic
In terms of condition codes, what value does setg
put in its specified destination?
Back: ~(SF ^ OF) & ~ZF
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Basic
What is ge
in the setge
instruction short for?
Back: Greater or equal.
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Cloze
{setge
} is a synonym for {setnl
}.
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Cloze
{1:setge
} is to {2:signed} integers whereas {2:setae
} is to {1:unsigned} integers.
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Cloze
{1:setnb
} is to {2:unsigned} integers whereas {2:setnl
} is to {1:signed} integers.
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Basic
What condition code(s) does setge
refer to?
Back: SF
and OF
.
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Basic
In terms of condition codes, what value does setge
put in its specified destination?
Back: ~(SF ^ OF)
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Basic
What is a
in the seta
instruction short for?
Back: Above.
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Cloze
{seta
} is a synonym for {setnbe
}.
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Basic
What condition code(s) does seta
refer to?
Back: CF
and ZF
.
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Basic
In terms of condition codes, what value does seta
put in its specified destination?
Back: ~CF & ~ZF
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Basic
What is ae
in the setae
instruction short for?
Back: Above or equal.
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Cloze
{setae
} is a synonym for {setnb
}.
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Basic
What condition code(s) does setae
refer to?
Back: CF
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Basic
In terms of condition codes, what value does setae
put in its specified destination?
Back: ~CF
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Basic
What is be
in the setbe
instruction short for?
Back: Below or equal.
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Cloze
{setbe
} is a synonym for {setna
}.
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Basic
What condition code(s) does setbe
refer to?
Back: CF
and ZF
.
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Basic
In terms of condition codes, what value does setbe
put in its specified destination?
Back: CF | ZF
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
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 |
(SF ^ OF) | ZF |
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 |
CF | ZF |
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.
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.
END%%
%%ANKI Basic Is the following considered a direct or indirect jump?
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.
END%%
%%ANKI Basic Is the following considered a direct or indirect jump?
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.
END%%
%%ANKI Basic Is the following considered a direct or indirect jump?
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.
END%%
%%ANKI Basic Is the following considered a direct or indirect jump?
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.
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.
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.
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.
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.
END%%
%%ANKI Basic What is "PC" in "PC-relative" short for? Back: Program Counter. Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
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.
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.
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.
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.
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.
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.
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.
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.
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.
END%%
%%ANKI
Basic
In most cases, how can the following for
loop be rewritten as a while
loop?
for (init; test; update) { body; }
Back:
init;
while (test) { body; update }
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016. Tags: c17
END%%
%%ANKI Basic In what situation are the following two blocks of code not equivalent?
for (init; test; update) { body; }
init;
while (test) { body; update }
Back: Situations in which the for
-loop has a continue
statement in the body
.
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
Tags: c17
END%%
%%ANKI
Basic
What efficient data structure do switch
statements compile down into?
Back: Jump tables.
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
Tags: c17
END%%
%%ANKI
Basic
What two conditions must be satisfied before a switch
statement employs a jump table?
Back: A sufficient number of case
statements that span a small range of values.
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
Tags: c17
END%%
%%ANKI
Basic
Why might a switch
statements be faster than an equivalent if
/else
chain?
Back: A switch
statement can compile down into a jump table.
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
Tags: c17
END%%
%%ANKI Basic What is a jump table? Back: An array of (code) memory locations to potentially jump to. Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Basic
Suppose a switch
compiles into a jump table. What is a missing case?
Back: An offset in the jump table corresponding to an unspecified case
statement.
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
Tags: c17
END%%
%%ANKI
Basic
Suppose a switch
compiles into a jump table. How are missing cases handled?
Back: By using the label (memory location) for the default case.
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
Tags: c17
END%%
%%ANKI
Basic
Suppose a switch
compiles into a jump table. How are duplicate cases handled?
Back: By using the same label (memory location) for all duplicate cases.
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
Tags: c17
END%%
CMOV
Like access#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 |
(SF ^ OF) | ZF |
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 |
CF | ZF |
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.
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.
END%%
%%ANKI
Basic
What is instruction cmove
an acronym for?
Back: Conditional move equal.
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
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.
END%%
Bibliography
- Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.