Execute o código a seguir e explique os resultados mostrados pelo programa.
#include <stdio.h> void dump (void *p, int n) { unsigned char *p1 = (unsigned char *) p; while (n--) { printf("%p - %02x\n", p1, *p1); p1++; } } struct um { int f; char c; short d; char i; }; struct um a = {(0x0aaa & -23), ~(12 << 4), (0x0f | 1000), (~(-4) + 1)}; int main (void) { dump (&a, sizeof(a)); return 0; }
Considere o código abaixo:
struct X { int v; struct X *next; }; int f (int x) { return x; } int add (struct X *x) { int a = 0; for (; x != NULL; x = x->next) a += f(x->v); return a; }Codifique a função
add
(e a f
) em assembly.
Teste com uma main
escrita em C.
Codifique a função fat
, com a definição abaixo, em assembly.
Teste-a com uma função main
escrita em C.
int fat (int n) { if (n==0) return 1; else return n*fat(n-1); }