Machine-Level Representation of Programs‖l
1 Machine-Level Representation of Programs Ⅱ
Outline Data movement Data manipulation Control structure Suggested read ing -chφp3.4.3.5,3.6
2 Outline • Data movement • Data manipulation • Control structure • Suggested reading – Chap 3.4, 3.5, 3.6
Indexed Addressing Mode Figure 3.3 P137 Most general form Imm (Eb, Ei, s) M[Imm+ R[Eb]+ riE]s Constant displacement"Imm: 1, 2, or 4 bytes Base register Eb: Any of 8 integer registers Index register E;: Any, except for %esp S: Scale: 1.2 4 or 8
3 Indexed Addressing Mode Figure 3.3 P137 • Most general form – Imm(Eb , Ei , s) – M[Imm+ R[Eb ]+ R[Ei ]*s] – Constant “displacement” Imm: 1, 2, or 4 bytes – Base register Eb : Any of 8 integer registers – Index register Ei : Any, except for %esp – S: Scale: 1, 2, 4, or 8
Data Movement Figure 3.4 P139 Instruction Effect Description movI S D DES Move double word moVw SD DES Move word mob S D DES ove byTe movsbl S,DD<SignedExtend( S) Move sign-extended byte movzbl S,DD< ZeroExtend()Move zero-extended byte push R[%esp]+R[%esp]-4 Push M[R[%esp]]<s popl D< MR[Yoesp] Po R[%esp]←R[%esp]+4
4 Data Movement Figure 3.4 P139 Instruction Effect Description movl S, D D S Move double word movw S, D D S Move word movb S, D D S Move byte movsbl S, D D SignedExtend( S) Move sign-extended byte movzbl S, D D ZeroExtend(S) Move zero-extended byte pushl S R[%esp] R[%esp]-4 M[R[%esp]] S Push popl D D M[R[%esp]] R[%esp] R[%esp]+4 Pop
Move Instructions Format movl src, dest src and dest can only be one of the following Immediate (except dest) Register Memory
5 Move Instructions • Format – movl src, dest – src and dest can only be one of the following • Immediate (except dest) • Register • Memory
Move Instructions Format The only possible combinations of the (src, dest) are (immediate, register (memory, register) oad (register, register (immediate, memory store (register, memory) store
6 Move Instructions • Format – The only possible combinations of the (src, dest) are • (immediate, register) • (memory, register) load • (register, register) • (immediate, memory) store • (register, memory) store
Data Movement Example P139 mov5O×4050,%ea immediate register movl %ebp, esp register register movl (%edx, %ecx), %eax memory register mo$-17,(%esp) mmediate memory movl %eax, -12(%ebp) register memory
7 Data Movement Example P139 movl $0x4050, %eax immediate register movl %ebp, %esp register register movl (%edx, %ecx), %eax memory register movl $-17, (%esp) immediate memory movl %eax, -12(%ebp) register memory
Data Movement Example P139 Initial value dh=8d ‰eax=98765432 mob %dh,%a ‰eax=9876548d 2 most%dh,%eax%ea×=千千ff8d (Move sign-extended byte) 3 movzbl %dh %eax %eax=0000008d ( Move zero-extended byte)
8 Data Movement Example P139 Initial value %dh=8d %eax =98765432 1 movb %dh, %al %eax=9876548d 2 movsbl %dh, %eax %eax=ffffff8d (Move sign-extended byte) 3 movzbl %dh, %eax %eax=0000008d ( Move zero-extended byte)
Stack operations Figure 3.5 P140 %eax 0x123 %edx O esp0x×108 Increasing address 号esp—0x108 Stack“top
9 Stack operations Figure 3.5 P140 %eax 0x123 %edx 0 %esp 0x108 Increasing address 0x108 Stack “top” %esp
Stack operations %eax 0x123 %edx O esp0x×104 push‰%eax 0x108 esp 0x104 ox123 Stack“top
10 Stack operations %eax 0x123 %edx 0 %esp 0x104 0x104 Stack “top” 0x123 0x108 %esp pushl %eax