Convert the following code in to ARM assembly language Tripl
Convert the following code in to ARM assembly language.
Triple Max
// Return max of three variables
int max(int a, int b, int c) {
// Fill in your own code for this function
}
int main() {
// Use registers for local variables
int x = 10;
int y = 5;
int z = 20;
int max = max(x, y, z);
printf(\"max = %d\ \", max);
return 0;
}
Solution
program
pushl %eax
pushl %ecx
pushl %edx
pushl $5
pushl $4
pushl $3
call add3
pushl %ebp
movl %esp, %ebp
pushl %ebx
pushl %esi
pushl %edi
subl $4, %esp
movl 8(%ebp), %eax
addl 12(%ebp), %eax
addl 16(%ebp), %eax
movl %eax, -16(%ebp)
movl -16(%ebp), %eax
movl -12(%ebp), %edi
movl -8(%ebp), %esi
movl -4(%ebp), %ebx
movl %ebp, %esp
popl %ebp
ret
addl $12, %esp
movl %eax, wherever
popl %edx
popl %ecx
popl %eax

