Title: CSE 351 23au / LS7 x86-64 Programming I

Q: The combination of parts of the processor design that one needs to understand to write assembly code is known as the ___
A: Instruction Set Architecture (ISA)

Q: What does the ISA consist of?
A: 1. The system's state
2. The instruction set
3. The effect on the system state of each instruction

Q: All the information that defines the culmination of past instructions and what values are currently stored are known as the ___
A: state

Q: The list and format of all instructions the CPU can execute is known as the ___
A: instruction set

Q: What happens to the system state after each instruction is known as the ___
A: effect

Q: What does the instruction use to know the size of the data it is operating on?
A: Size specifiers

Q: How many bytes does the size specifier ‘b’ stand for?
A: 1 byte, byte

Q: How many bytes does the size specifier ‘w’ stand for?
A: 2 bytes, word
(not the word size of the machine)

Q: How many bytes does the size specifier ‘l’ stand for?
A: 2 bytes, long word

Q: How many bytes does the size specifier ‘q’ stand for?
A: 8 bytes, quad word

Q: What is the name of the operand for x86-64 assembly instructions that corresponds to constant integer data?
A: Immediates

Q: What prefix denotes the immediates operand?
A: '$', e.g., '$1'

Q: True or false: Immediates can be specified in decimal and hex, and decimals can be positive or negative.
A: True, what really mattters is the binary representation used in computations

Q: True or false: Registers are referred to by address and not names since they are part of memory and not the CPU
A: False, registers are referred to by names and not the addresses because they are part of the CPU, not memory

Q: A location that stores a small amount of data (a word size), which can be accessed very quickly, is known as a ___
A: Register

Q: In x86-64, how many general-purpose registers are there?
A: 16

Q: What prefix denotes the registers operand?
A: '%', e.g., '%rax'

Q: What symbols denote the memory operand?
A: '()', e.g., '(%rax)'

Q: True or false: By default, using a memory operand in an instruction will dereference the specified address, using the size specified by the instruction
A: True

Q: True or false: Both operands of a two-operand instruction can be of Memory type
A: False, only one of the two operands can be of Memory type. This is based on design decisions made to save space and improve efficiency