Sie sind auf Seite 1von 2

Atividade Lab 1

1. Ok.

2. Quando o gcc é invocado, normalmente é realizado um pré-processamento, compilação,


montagem e ligação. Basicamente, esses passos fazem o seguinte:

Pré-processamento:​ fase em que se recebe um texto e efetua conversões léxicas nele;

Compilação:​ fase em que é gerado, a partir da fase anterior, o código assembly


do programa;

Montagem: ​etapa em que o código é convertido para instruções de máquina, gerando um


objeto;

Ligação:​ etapa em que o código do programa é unido a bibliotecas externas.

3. (c) Mais de 10 opções

4. O programa “as” ou assembler pode transformar o programa assembly em um programa


objeto ou seja, na linguagem de máquina (binário). O programa “ld” ou linker pode realizar a
etapa de ligação e formar o executável.

5.
(a) Parar o processo logo após o pré-processador.
-E
(b) Parar o processo logo após gerar as instruções assembly (e antes de compilar)
-S
(c) Parar o processo logo depois de compilar e antes de gerar o executável
-C

6. O macro.c é o código fonte original com seus macros definidos


O macro.p foi gerado após o pré-processamento do arquivo fonte, onde textualmente há a
substituição das funções definidas nos macros pelas expressões equivalentes.

7. A utilização do comando : gcc -S -o print.S print.c gerou um código em assembly do arquivo


fonte.
Portanto o arquivo foi compilado, gerando as instruções em assembly da execução do
programa.

8. A utilização do -O do gcc parece compactar o espaço do arquivo fonte e verifica se dá para


otimizar a execução.
9. O arquivo troca-2.S possui menos comandos, isso provavelmente aconteceu pelo uso do
comando -O, que compactou e otimizou o código. Provavelmente aquelas instruções do código
fonte poderiam ser reescritas por bem menos comandos em assembly.

10. O arquivo loop2 foi mais rápido na execução do que o loop1, isso aconteceu pelo uso do
comando -O que otimizou o programa, resultando em um tempo de execução melhor do que
executando o arquivo normalmente.

11. Com o JIT ativado o arquivo foi executado em menor tempo. Isso aconteceu porque o
código faz propositalmente uma grande utilização dos trechos das funções, com o uso do for.
Então conforme a utilização houve a substituição do byte code por código binário e então o
programa foi ganhando velocidade na execução. Tornando vantajoso sua utilização.

12. Pelo o que entendi, a função ‘luaV_execute’ é exatamente a função que está fazendo a
interpretação. Em cada ciclo de interpretação de instrução, uma instrução é buscada da
posição PC da memória e carregada em IR. O valor de PC é atualizada. A instrução é então
executada.

Das könnte Ihnen auch gefallen