INF1005 Programação I - milidiu/inf1005/aula02_programacao.pdf · bilhões de instruções de...

22
1 INF1005 Programação I Pontifícia Universidade Católica Departamento de Informática

Transcript of INF1005 Programação I - milidiu/inf1005/aula02_programacao.pdf · bilhões de instruções de...

1

INF1005

Programação I

Pontifícia Universidade Católica

Departamento de Informática

2

INF1005

Programação

Pontifícia Universidade Católica

Departamento de Informática

3

Ábaco Binário

4

Processador

Aritmética

Lógica Desvio

5

Computador de programa armazenado

Arquitetura de von Neumann

Turing

1936 Von Neumann

1945

6

Esquema de um computador

7

8

Raspberry Pi 2 Model B

9

Raspberry Pi 2 model B

February 2015

900MHz quad-core ARM Cortex-A7 CPU

1GB RAM

Micro SD card slot

10

Raspberry Pi 2 model B

4 USB ports

40 GPIO pins

Full HDMI port

Ethernet port

Combined 3.5mm audio jack and composite video

Camera interface (CSI)

Display interface (DSI)

VideoCore IV 3D graphics core

11

Raspberry Pi 2 model B

Because it has an ARMv7 processor,

it can run the full range of ARM GNU/Linux,

including Snappy Ubuntu Core,

as well as Microsoft Windows 10

12

Unidade Central de Processamento

Principal componente

Localiza e executa as

instruções de um programa

o Aritmética

o Lógica

o Desvio

Executa operações simples

com grande rapidez

13

Memória Principal (RAM)

Memória volátil

o usada para armazenar dados e programas

Conteúdo modificável pelas

instruções dos programas

o leitura

o escrita

Permite acesso aleatório

o direto

o não sequencial

14

Disco Rígido (HD)

memória para

armazenamento

não-volátil (1 TB)

armazenamento em

superfícies

magnetizáveis

acesso aleatório aos

dados armazenados

15

Cartões de Memória (SD)

Capacidades

o 8 GB, 16 GB, 32 GB, 64 GB

Velocidade de Leitura

o até 95MB/s

Velocidade de Gravação

o até 90MB/s

Velocidade de Vídeo

o C10

o U3

16

Instruções de Máquina

Um processador executa instruções de máquina

Um conjunto típico de instruções inclui operações Aritméticas

Lógicas

e de desvio

Muito simples mas executadas em altíssima

velocidade

bilhões de instruções de ponto flutuante por Segundo

Representadas por sequências de dígitos binários

17

Exemplo em X64 Assembly

A common instruction is the LOOP instruction, which

decrements ECX, and then jumps if the result is not 0.

XOR EAX, EAX ; zerar o valor de EAX

;

MOV ECX, 10 ; loop 10 vezes

Aqui: ; este é um marcador para repetição

ADD EAX, 2 ; incrementa EAX de 2

LOOP Aqui ; decrementa ECX, loop se não for 0

18

X64 Assembly – operações usuais

Opcode Meaning Opcode Meaning MOV Move to/from/between

memory and registers AND/OR/XOR/NOT Bitwise operations

CMOV* Various conditional moves SHR/SAR Shift right logical/arithmetic

XCHG Exchange SHL/SAL Shift left logical/arithmetic

BSWAP Byte swap ROR/ROL Rotate right/left

PUSH/POP Stack usage RCR/RCL Rotate right/left through carry bit

ADD/ADC Add/with carry BT/BTS/BTR Bit test/and set/and reset

SUB/SBC Subtract/with carry JMP Unconditional jump

MUL/IMUL Multiply/unsigned JE/JNE/JC/JNC/J* Jump if equal/not

equal/carry/not carry/ many others

DIV/IDIV Divide/unsigned LOOP/LOOPE/LOOPNE

Loop with ECX

INC/DEC Increment/Decrement CALL/RET Call subroutine/return

NEG Negate NOP No operation

CMP Compare CPUID CPU information

19

Linguagens de Alto-Nível

Programar em assembler excesso de detalhes devidos a natureza da máquina

propensa a erros

baixa produtividade

Meados dos anos 50 surgimento de várias linguagens de alto nível

Nível de abstração cada vez mais elevado mais próximas das linguagens utilizadas pelos seres

humanos

20

Linguagens de Alto-Nível

FORTRAN (1957)

COBOL (1960)

ALGOL (1968)

PASCAL (1970)

C (1972)

C++ (1983)

JAVA (1995)

21

Dennis M. Ritchie

228 páginas

22

Compilação

Programas C não são executaveis diretamente pelo

processador

Antes de executá-los é preciso traduzir os comandos

de C para instruções de máquina

processo chamado compilação

realizado por um compilador