conteúdo da aula 7

This commit is contained in:
Blau Araujo 2025-05-26 08:04:43 -03:00
parent c142033bf7
commit d99402393f
2 changed files with 460 additions and 4 deletions

View file

@ -346,7 +346,7 @@ _start:
o resultado em um registrador de destino.
#+end_quote
** Acesso definindo 'main' no Assembly
** Acesso em Assembly exportando main
Exportando a rotina principal do programa com o nome =main=, nós podemos gerar
o executável com o =gcc= que, utilizando o objeto de inicialização da linguagem
@ -446,7 +446,7 @@ da linguagem C (=crt0.o=) e outro totalmente em Assembly, mas com um pequeno
módulo de sub-rotinas para conversão e impressão que só será estudada nos
próximos tópicos.
** Exemplo híbrido (Assembly+C)
** Exemplo em Assembly com main e gcc
Arquivo: [[exemplos/06/cargs.asm][cargs.asm]]
@ -547,7 +547,7 @@ A volatilidade desses registradores não está relacionada com seu uso antes
da chamada da função (=call=), mas com o fato da ABI não obrigar a função
chamada a salvar e restaurar seus conteúdos.
** Exemplo em Assembly puro
** Exemplo com acesso direto à pilha
- Arquivo: [[exemplos/06/args.asm][args.asm]]
- Módulo: [[exemplos/06/print_utils.asm][print_utils.asm]]
@ -640,7 +640,7 @@ argv[4]: d
* Exercícios propostos
1. Crie um programa em Assembly que receba seu nome como argumento e imprima =Salve, NOME!=.
2. Crie uma versão desse mesmo programa em Assembly híbrido (chamando funções da linguagem C).
2. Crie uma versão desse mesmo programa em Assembly chamando funções da linguagem C.
3. Utilizando o GDB e o exemplo =cargs.asm=, analise o comportamento dos registradores voláteis nas chamadas de funções da =glibc=.
4. Com base nos exemplos do tópico, crie um programa que liste as variáveis no vetor de ambiente.