5.5 KiB
title | TARGET DECK | FILE TAGS | tags | |
---|---|---|---|---|
Procedures | Obsidian::STEM | x86-64 |
|
Overview
The details of procedures are detailed in x86-64/procedures. This file touches on the most relevant instruction classes.
CALL and RET
Like conditions#JMP instructions, call
allows specifying a direct or indirect operand. call
pushes the address of the instruction following it onto the stack and updates the PC to the operand. ret
reverts these steps.
Instruction | Operands | Description |
---|---|---|
call |
Label | Procedure call |
call |
*Operand | Procedure call |
ret |
Return from call |
%%ANKI
Cloze
The {call
} instruction is the counterpart to the {ret
} 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 two things does the call
instruction do?
Back: It pushes the return address on the stack and updates the PC.
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 two things does the ret
instruction do?
Back: It pops the return address off the stack and updates the PC.
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 ret
equivalently written using a line of assembly?
Back:
popq %rip
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 operand forms of call
mirror what other instruction class?
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
A call
instruction pushes what address onto the stack?
Back: That of the instruction following the call
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 return address is pushed onto the stack after call
is run?
1: ...
2: callq .L1
3: ...
Back: 3
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 address is the PC updated to after call
is run?
1: ...
2: callq .L1
3: ...
Back: That corresponding to label .L1
.
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
Which register(s) does a call
instruction update?
Back: %rsp
and %rip
.
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
Which register(s) does a ret
instruction update?
Back: %rsp
and %rip
.
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
LEAVE
leave
parallels the ret
instruction. It is equivalent to the following two instructions:
movq %rbp, %rsp
popq %rbp
%%ANKI
Basic
What two things does the leave
instruction do?
Back: Restores the stack pointer and pops off the caller-saved base pointer.
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 leave
equivalently written using a pair of instructions?
Back:
movq %rbp, %rsp
popq %rbp
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
Fixed-sized frames use which of leave
and/or ret
?
Back: Just ret
.
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
Variable-sized frames use which of leave
and/or ret
?
Back: Both.
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:ret
} is to {2:%rsp
} whereas {2:leave
} is to {1:%rbp
}.
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.