mirror of
https://gitlab.com/blau_araujo/cblc.git
synced 2025-05-11 02:56: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]]
|
[[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
|
- Ken Thompson cria a linguagem B (1969) para ter uma linguagem de alto nível
|
||||||
para reescrever o UNIX.
|
para reescrever o UNIX.
|
||||||
|
@ -26,6 +26,92 @@
|
||||||
- Os racunhos de 1987 (C87) são utilizados para escrever a segunda edição do
|
- 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/.
|
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...
|
** Características da linguagem C...
|
||||||
|
|
||||||
- Linguagem compilada
|
- Linguagem compilada
|
||||||
|
|
Loading…
Add table
Reference in a new issue