Additions:
popl %ebx
Additions:
# int prod(int x, int y, int z);
# int f(int x, int y, int z, int w) {
# return prod(x,y,z)+w;
.globl f
f:
subl $12, %esp # prologo
movl 16(%esp), %eax # x
movl 20(%esp), %ecx # y
movl 24(%esp), %edx # z
movl %eax, (%esp) # passa x
movl %ecx, 4(%esp) # passa y
movl %edx, 8(%esp) # passa z
call prod
addl 28(%esp), %eax # somma w
addl $12, %esp # epilogo
Additions:
# int uno();
# int somma_uno_a(int x) {
# return x+uno();
.globl somma_uno_a
somma_uno_a:
call uno
addl 4(%esp), %eax
Additions:
# int myabs(int x) {
# return x<0 ? -x : x;
.globl myabs
myabs:
movl 4(%esp), %eax
negl %eax
cmovll 4(%esp), %eax
Additions:
# int testcc(short x, short y) {
# return 0<=x && x
.globl testcc
testcc:
movw 4(%esp), %cx # x
movw 8(%esp), %dx # y
testw %cx, %cx
setge %al
cmpw %dx, %cx
setl %cl
andb %cl, %al
movzbl %al, %eax
Additions:
==Esercizio 1 (istruzione SETcc)==
%%(asm;es1.s)
==Esercizio 2 (istruzione CMOVcc)==
%%(asm;es2.s)
==Esercizio 3 (chiamata a funzione senza parametri)==
%%(asm;es3.s)
==Esercizio 4 (chiamata a funzione con parametri)==
%%(asm;es4.s)
Additions:
%%(asm;es5.s)
Deletions:
%%(asm,es5.s)
Additions:
==Esercizio 5 (chiamata a funzione con parametri in un ciclo)==
Deletions:
==Esercizio 5==
Additions:
===Soluzioni esercitazione 3 (17 novembre 2015)===