ka tarkvara rakenduse sisemised mälupiirkonnad samad pushl %ebp Ennustatavus tähendab, et on võimalik tagada · Simuleerimine nõuaks vastavaid liideseid, kui just (.data, .heap jne.) movl %esp, %ebp nõuetega paika pandud piir-aegade täitmine: sama keelt ei MMU vajalik nii mälupiirkondade kaitsmiseks pushl %ecx Ranged piir-ajad on alati täidetud kasutata kui ka subl $4, %esp Ennustatavus
L5: add %g2,1 ,%g2 cmp %g2,%g3 ble,a L5 add %o0,%g2,%o0 L3: retl nop MIPS-I (SGI spinoff) assembleris sumto: li $3, 0 li $2, 0 blt $4, $0, L3 L5: addu $3, $3, $2 addu $2, $2, 1 ble $2, $4, L5 L3: move $2, $3 Jr $31 Intel 386, 486, Pentium _sumto: pushl %ebp movl %esp,%ebp movl 8(%ebp),%ecx xorl %eax,%eax xorl %edx,%edx cmpl %ecx,%eax .align 2 L5: addl %edx,%eax incl %edx cmpl %ecx,%edx L3: eave ret FORTRAN INTEGER FUNCTI0N sumto(n) isum = 0 DO i 10 = 0,n isum = isum + i 10 CONTINUE sumto = isum RETURN END COBOL PROCEDURE SUMTO USING N, Answer. Begin. PERFORM VARYING LoopCount FROM 0 BY 1
add %o0,%g2,%o0 ; sum = sum + i. L5: add %g2,1 ,%g2 ; i = i + 1. cmp %g2,%g3 ; Kui i<=n ... ble,a L5 ; ... mine L5 add %o0,%g2,%o0 ; ,aga enne sum = sum + i. L3: retl ; Valmis... nop ; ,aga enne ära tee midagi! ITK 2007, Kalev Pihl Sissejuhatus informaatikasse 12 Sumto ja Intel 386, 486, Pentium, ... •386 on vähe registreid, argument saadetakse hariliku mälu kaudu. Resultaat saadetakse registris %edx. _sumto: pushl %ebp ; Loome ''framepointer’’-i movl %esp,%ebp ; movl 8(%ebp),%ecx ; Võta n. xorl %eax,%eax ; sum = 0 xorl %edx,%edx ; i = 0 cmpl %ecx,%eax ; Kui i>n ... jg L3 ; ... mine L3 .align 2 L5: addl %edx,%eax ; sum = sum + i incl %edx ; i = i+1 cmpl %ecx,%edx ; Kui i<=n ... jle L5 ; ... mine L5 L3: leave ; Taasta ebp. ret ; Valmis! ITK 2007, Kalev Pihl Sissejuhatus informaatikasse 13 FORTRAN INTEGER FUNCTI0N sumto(n) isum = 0 DO i 10 = 0,n isum = isum + i 10 CONTINUE sumto = isum RETURN END ITK 2007, Kalev Pihl