Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 3

Registers

x86
%eax
%ecx
%ed
x
%eb
x
%esi
%edi
%esp
%eb
p

uses

notes

used to return function values


general purpose
general purpose
general purpose

must be restored

general purpose
general purpose
stack pointer
base pointer

must be restored
must be restored

Accessing function parameters


Located 8 bytes offset from %ebp (and 4 bytes offset for each subsequent
parameter.

Y86 function setup


pushl %ebp

push base pointer onto stack

rrmovl %esp, %ebp

load next usable stack address into %ebp

Y86 function return code


popl %ebp
ret

restore base pointer


adds 4 to the stack pointer and jumps to the return address

setup y86 init function


irmovl Stack, %esp

set stack pointer to program stack location

irmovl Stack, %ebp

set base pointer to program stack location

call main

call main function

halt

exit program

x86 and y86 equivalents

movl immediate, register


''
''
''
leave

irmovl immediate, register


rrmovl register, register
mrmovl address, register
rmmovl register, address
rrmovl %ebp, %esp
popl %ebp

Conditional Jumps
x86
cmp register, register
jmp (or jl, jle, )

y86
pushl %ecx

arbitrary general purpose register

subl register, register subtract second from first, save in second


popl %ecx

restore register

conditional jump

Floating Point Representation


Bias: E = 2^(k-1)-1 (127 for single, 1023 for double)
Exp = Actual exponent + Bias

Single precision
sign bit, 8 bits for exponent, 22 bits for fraction (not including assumed "1.")
Normalized
denormalized
infinity
NaN
Double precision

exponent
exponent
exponent
exponent

!= 0 & exponent !=255


== 0
== all ones, frac == 0
== all ones, frac != 0

sign bit, 11 bits for exponent, 52 bits for fraction (not including assumed "1.")

You might also like