Considere o programa C a seguir:
#include <stdlib.h> int main() { system("ls -ls"); return 0; }Traduza a função
main
para assembly, criando um
arquivo ex1.s
.
Aproveite o seguinte esqueleto para criar o seu arquivo assembly:
.data s1: .string "ls -ls" .text .globl main main: /* prologo */ pushl %ebp movl %esp, %ebp /* coloque seu codigo aqui */ /* finalizacao */ movl %ebp, %esp popl %ebp ret"Compile" seu programa com o comando
gcc -m32 -o ex1 ex1.s
e execute-o, verificando seu resultado.
int filtro(int x, int lim) { if (x < lim) return 0; else return x; }
#include <stdio.h> #define LIM 1 int filtro(int x, int lim); int nums[5] = {3,-5,7,8,-2}; int main() { int i; int *p = nums; for (i = 0; i < 5; i++) { printf("%d\n", filtro(*p,LIM)); p++; } return 0; }
gcc -Wall -m32 -o ex2 filtro.c main.c
)
e execute o programa gerado, verificando seu resultado.
Traduza agora a função main
para assembly, criando um
novo arquivo mainasm.s
.
Aproveite o seguinte esqueleto para criar o seu arquivo assembly:
.data nums: .int 3, -5, 7, 8, -2 s1: .string "%d\n" .text .globl main main: /* prologo */ pushl %ebp movl %esp, %ebp /* coloque seu codigo aqui */ /* finalizacao */ movl %ebp, %esp popl %ebp retCompile os dois módulos juntos (
gcc -Wall -m32 -o ex2asm filtro.c mainasm.s
),
execute o programa gerado e
verifique se o resultado é o mesmo obtido pelo programa com a main em C!