mirror of
https://gitlab.com/blau_araujo/cblc.git
synced 2025-05-09 10:16:35 -03:00
Conteúdo da aula 1 atualizado
This commit is contained in:
parent
2fc5d363b9
commit
6f44f3d103
1 changed files with 87 additions and 1 deletions
|
@ -8,7 +8,7 @@
|
|||
|
||||
[[https://youtu.be/wqJQL5W9FIw][Vídeo desta aula]]
|
||||
|
||||
** Principais momentos...
|
||||
** Resumo do vídeo...
|
||||
|
||||
- Ken Thompson cria a linguagem B (1969) para ter uma linguagem de alto nível
|
||||
para reescrever o UNIX.
|
||||
|
@ -26,6 +26,92 @@
|
|||
- Os racunhos de 1987 (C87) são utilizados para escrever a segunda edição do
|
||||
livro, com o nome de /The ANSI C Programming Language/.
|
||||
|
||||
** Conceitos abordados na aula...
|
||||
|
||||
*** O que é um programa de computador?
|
||||
|
||||
Um programa pode ser entendido como uma forma de manipular dados através de
|
||||
instruções para a realização de alguma tarefa.
|
||||
|
||||
*** O que é linguagem de máquina?
|
||||
|
||||
A linguagem de máquina (ou /código de máquina/) é o conjunto de códigos numéricos
|
||||
binários (numeração de base 2) que, transformados em sinais elétricos, irão
|
||||
acionar as operações implementadas na CPU do computador (/OpCodes/).
|
||||
|
||||
*** O que é uma linguagem de programação?
|
||||
|
||||
Uma linguagem de programação é um conjunto de especificações e regras que
|
||||
definem uma forma de escrever programas sem recorrer à escrita direta em /código
|
||||
de máquina/.
|
||||
|
||||
*** O que são linguagens de baixo e alto nível?
|
||||
|
||||
Toda linguagem de programação oferece algum grau de /abstração/ (redução de
|
||||
complexidades) em relação à escrita do /código de máquina/ (que é a única
|
||||
linguagem que a CPU do computador é capaz de interpretar).
|
||||
|
||||
A linguagem Assembly, uma linguagem de baixo nível, oferece basicamente um
|
||||
conjunto de /mnemônicos/ para facilitar a escrita de instruções da CPU (/OpCodes/) e
|
||||
algumas macros e pseudo-instruções para orientar a /montagem/ do arquivo binário
|
||||
do programa.
|
||||
|
||||
Exemplo de programa em Assembly (NASM x86_64) que não faz nada e sai com estado
|
||||
de término =42=.
|
||||
|
||||
#+begin_src asm
|
||||
section .text
|
||||
global _start ; Ponto de entrada do programa
|
||||
|
||||
_start:
|
||||
; Convenção da chamada de sistema 'exit'
|
||||
mov rax, 60 ; Passar o número da chamada de sistema (60 = exit) para RAX.
|
||||
mov rdi, 42 ; Passar o valor do estado de término (42) para RDI
|
||||
syscall ; Chamar o kernel
|
||||
#+end_src
|
||||
|
||||
A linguagem C, por sua vez, abstrai procedimentos completos (rotinas) na forma
|
||||
de palavras-chave, funções da biblioteca padrão, estruturas e construções de
|
||||
linguagem, o que faz dela uma linguagem de alto nível.
|
||||
|
||||
Exemplo de programa em C que não faz nada e sai com estado de término =42=.
|
||||
|
||||
#+begin_src c
|
||||
// Ponto de entrada do programa (função 'main')...
|
||||
int main(void) {
|
||||
return 42; // Terminar a função retornando o valor 42...
|
||||
}
|
||||
#+end_src
|
||||
|
||||
*** O que é compilação?
|
||||
|
||||
Compilação é o processo de traduzir um código escrito em uma linguagem de alto
|
||||
nível (por exemplo, C) para uma linguagem de montagem (por exemplo, Assembly).
|
||||
|
||||
*** O que são implementações?
|
||||
|
||||
Toda linguagem de programação precisa ser implementada conforme suas
|
||||
especificações.
|
||||
|
||||
Linguagens compiladas, por exemplo, são implementadas através dos seus
|
||||
/compiladores/, enquanto as linguagens interpretadas são implementadas nos seus
|
||||
/interpretadores/.
|
||||
|
||||
No caso da linguagem C, as especificações são implementadas na forma de um
|
||||
/compilador/ (=cc=, nos Unix, e =gcc=, no Projeto GNU) e de uma /biblioteca padrão/
|
||||
(=libc=, nos Unix, e =glibc=, no Projeto GNU).
|
||||
|
||||
*** O que são arquiteturas orientadas a palavras?
|
||||
|
||||
São sistemas computacionais que utilizam quantidades arbitrárias de bits como
|
||||
unidade de tamanho de dados. Exemplo: o PDP-7 utilizava palavras de 18 bits.
|
||||
|
||||
*** O que são arquiteturas orientadas a bytes?
|
||||
|
||||
São sistemas computacionais que utilizam múltiplos de bytes (8 bits) para
|
||||
definir tamanhos de dados. Exemplo: a arquitetura x86_64 utiliza palavras de
|
||||
2 bytes, o que corresponde ao tipo =short int= na linguagem C.
|
||||
|
||||
** Características da linguagem C...
|
||||
|
||||
- Linguagem compilada
|
||||
|
|
Loading…
Add table
Reference in a new issue