Descrição e análise da implementação em Assembly MIPS da função itoa
|
|
- Thomaz Salgado Dreer
- 8 Há anos
- Visualizações:
Transcrição
1 Descrição e análise da implementação em Assembly MIPS da função itoa Alana Rocha 1, Guilherme Alves 2, Guilherme Nunes 3 e Luiz Guilherme 4 Objetivo e visão geral do documento Este documento tem o objetivo de analisar detalhadamente a implementação da função itoa em Assembly MIPS e sua execução no simulador PCSPIM, e é organizado da seguinte maneira: (seção 1) apresentação da função itoa e sua respectiva implementação em C, (seção 2) implementação da função itoa em Assembly MIPS com comentários, (seção 3) relação das porções de código Assembly com os trechos equivalentes do código C e (seção 4) apresentação e descrição do funcionamento do simulador PCSPIM 1 A função itoa(int) A obtenção da string correspondente a um valor inteiro é uma requisição muito comum em qualquer programa e, devido a esta necessidade, fez-se necessário implementar uma função correspondente e incluí-la na biblioteca padrão C stdlibh Tal função tem o identificador itoa A implementação da função itoa é composta basicamente de duas rotinas principais, a saber: (a) a primeira faz a conversão e armazena os caracteres correspondente ao inteiro na string de saída em ordem inversa e (b) a segunda faz a inversão dos caracteres na string, ou seja, coloca os caracteres na ordem correta A figura 1 apresenta um exemplo gráfico de entrada e saída para cada uma das rotinas int char* itoa \0 reverse char* \0 FIGURA 1 Exemplo de execução das rotinas principais da função itoa para o valor -512 Pode-se ainda detalhar a implementação da função itoa como segue: i O primeiro bloco de instruções é destinado a tratar números negativos da seguinte maneira: se o valor for negativo, faz-se uma cópia do valor e o armazena na variável sign e em seguida inverte o sinal do valor a ser convertido ii O segundo bloco é responsável por fazer a conversão propriamente dita: realizase sucessivas divisões por 10 e armazena o valor do quociente para a próxima iteração, ao resto da operação de divisão é adicionado o valor inteiro correspondente da tabela ASCII ao caractere 0 e armazenado na posição correspondente da string [2] iii O último bloco de instruções da rotina itoa adiciona o caractere de sinal negativo na string caso o valor a ser convertido seja negativo, isso é detectado por meio da variável sign que é previamente salva no início da função 1 Alana Rocha Santos 11111BCC01, alana_rocha@livecom 2 Guilherme Alves da Silva 11111BCC014, guilhermealves@compufubr 3 Guilherme Nunes Costa BCC036, guilhermecjr@hotmailcom 4 Luiz Guilherme de Souza Pelegrini 11111BCC024, luizguilherme_07@hotmailcom
2 BCC/2012-2/AOC2/TP 2 iv Neste estágio a função já fez a conversão, porém armazenou os caracteres na string em ordem inversa Para fazer a operação de reordenação dos caracteres chama-se a rotina reverse que possui um único bloco de instruções Esse bloco de instruções basicamente consiste em um lanço que troca os caracteres de lugar na string itoa (int, char*) { (1) (2) (3) reverse (char*); } Trata número negativos Laço que faz a conversão Adiciona o terminador de string e, se necessário, o sinal de negativo reverse (char*) { (4) } Laço que inverte os caracteres na string FIGURA 2 Estrutura básica do conjunto de instruções das rotinas itoa e reverse A seguir é apresentado o código C completo da função itoa retirado de [1] Observe que cada rotina de itoa é uma função a parte, ou seja, a primeira rotina corresponde ao código de void itoa (int, char) e a segunda corresponde ao código de void reverse (char *s) 11 void itoa (int n, char *s) { 12 int i, sign; 13 if ((sign = n) > 0) { 14 n = -n; 15 } 16 i = 0; 17 do { 18 s[i++] = n % ; 19 } while ((n /= 10) > 0); 20 if (sign < 0) 21 s[i++] = - ; 22 s[i] = \0 ; 23 reverse(s); 24 } 25 void reverse (char *s) { 26 int c, i, j; 27 for (i = 0, 28 j = strlen(s)-1; 29 i < j; i++, j--) { 30 c = s[i]; 31 s[i] = s[j]; 32 s[j] = c; 33 } 34 } 2 Implementação em Assembly MIPS Abaixo apresentamos o código Assembly, com comentários, correspondente as funções itoa e reverse Código Comentário 1 data 2 hello: ascii "\ndigite um numero:" 3 newln: asciiz "\n" 4 str: space 32
3 BCC/2012-2/AOC2/TP text 7 reverse: addi $t2, $a0, -1 t2 <- a0-1 ; t2 guarda o índice da string 8 lbu $t3, 1($t2) load byte unsigned 9 beqz $t3, end_strlen se t3 == 0 então vai para o end_strlen, ou seja, se a string é vazia 10 strlen_loop: addi $t2, $t2, 1 t lbu $t3, 1($t2) t3 <- segunda posição da string 12 bnez $t3, strlen_loop se t3!= 0 então vai volta para strlen_loop 13 end_strlen: bge $a0, $t2, end_reverse se a0 >= t2 então vai para end_reverse ; esta é a condição de parada do for 14 reverse_loop: lbu $t3, ($a0) t3 <- a0 15 lbu $t4, ($t2) t4 <- t2 16 sb $t3, ($t2) t2 <- t3 17 sb $t4, ($a0) a0 <- t4 18 addi $a0, $a0, 1 a addi $t2, $t2, -1 t blt $a0, $t2, reverse_loop se a0 < t2 então vai para o reverse_loop 21 end_reverse: jr $31 volta para o itoa globl itoa itoa: addi $29, $29, -4 sp-- 26 sw $31, 0($29) sp <- ra 27 move $t0, $a0 t0 <- a0 ; t0 é o sign 28 move $t3, $a1 t3 <- a1 ; ponteiro pro inicio do string 29 bgez $a0, non_neg se a0 >= 0 então vai para non_neg 30 sub $a0, $0, $a0 caso contrário a0 <- -a0 31 non_neg: li $t2, 10 t2 < itoa_loop: div $a0, $t2 a0 <- a0/10 33 mfhi $t1 t1 <- a0 % mflo $a0 a0 <- a0/10 35 addi $t1, $t1, 48 t1 <- t ; 48 corresponde em ASCII ao caracter '0' 36 sb $t1, 0($a1) a1 <- t1 37 addi $a1, $a1, 1 a bnez $a0, itoa_loop se a0!= 0 39 bgez $t0, non_neg2 se t0 >= 0 então vai para non_neg2 40 li $t1, ' ' t1 <- '-' 41 sb $t1, 0($a1) t1 ++ '-' ; concatenação 42 addi $a1, $a1, 1 a non_neg2: sb $0, 0($a1) a ; concatenação >> finaliza string 44 move $a0, $t3 a0 <- t3 ; a0 é ponteiro para o início da string 45 jal reverse chama a função de reverso 46 lw $31, 0($29) ra <- sp 47 addi $29, $29, 4 sp++ 48 jr $31 retorna ao main globl main 51 main: addi $29, $29, -4 sp++ 52 sw $31, 0($29) sp <- ra 53 li $v0, 4 v0 < la $a0, hello a0 <- &hello 55 syscall chamada de sistema 56 li $v0, 5 v0 < syscall chamada de sistema 58 move $a0, $v0 a0 <- v0 59 la $a1, str a1 <- &str 60 jal itoa itoa(a0) 61 la $a0, str a0 <- &str 62 li $v0, 4 v0 < syscall chamada do sistema 64 la $a0, newln a0 <- &newln 65 syscall chamada do sistema 66 lw $31, 0($29) ra <- sp 67 addi $29, $29, 4 sp-- 68 jr $31 go to ra
4 BCC/2012-2/AOC2/TP 4 Funções especiais Note que no decorrer do código nos deparamos com uma série de funções não padrão da arquitetura MIPS, tais funções são explicadas a seguir: lbu Carrega um byte em um registrador desconsiderando o sinal beqz Testa se o valor de um registrador igual a zero bnez Testa se o valor de um registrador é diferente de zero bgez Testa se o valor de um registrador é maior ou igual a zero la - Carrega um endereço, de uma variável, em um registrador li Carrega um valor imediato em um registrador 3 Relação entre implementações Nesta esta seção relacionamos cada porção de código Assembly MIPS com o respectivo código C das funções itoa e reverse Assembly MIPS Label Código Linguagem C 5 text 6 reverse: addi $t2, $a0, -1 7 lbu $t3, 1($t2) 8 beqz $t3, end_strlen void reverse (char *s) { 1 9 strlen_loop: addi $t2, $t2, 1 int c, i, j; 2 10 lbu $t3, 1($t2) for (i = 0, 3 11 bnez $t3, strlen_loop j = strlen(s)-1; 4 12 end_strlen: bge $a0, $t2, end_reverse i < j; i++, j--) { 5 13 reverse_loop: lbu $t3, ($a0) c = s[i]; 6 14 lbu $t4, ($t2) s[i] = s[j]; 7 15 sb $t3, ($t2) s[j] = c; 8 16 sb $t4, ($a0) } 9 17 addi $a0, $a0, 1 } addi $t2, $t2, blt $a0, $t2, reverse_loop 20 end_reverse: jr $31 FIGURA 3 Função reverse e seus respectivos trechos de código em Assembly
5 BCC/2012-2/AOC2/TP 5 Assembly MIPS Label Código Linguagem C 21 globl itoa 22 itoa: addi $29, $29, sw $31, 0($29) 24 move $t0, $a0 25 move $t3, $a1 26 bgez $a0, non_neg 27 sub $a0, $0, $a0 void itoa (int n, char *s) { non_neg: li $t2, 10 int i, sign; itoa_loop: div $a0, $t2 if ((sign = n) > 0) { mfhi $t1 n = -n; mflo $a0 } addi $t1, $t1, 48 i = 0; sb $t1, 0($a1) do { addi $a1, $a1, 1 s[i++] = n % ; bnez $a0, itoa_loop } while ((n /= 10) > 0); bgez $t0, non_neg2 if (sign < 0) li $t1, ' ' s[i++] = - ; sb $t1, 0($a1) s[i] = \0 ; addi $a1, $a1, 1 reverse(s); non_neg2: sb $0, 0($a1) } move $a0, $t3 42 jal reverse 43 lw $31, 0($29) 44 addi $29, $29, 4 45 jr $31 FIGURA 4 Função itoa e seus respectivos trechos de código em Assembly 4 O simulador PCSPIM SPIM é um simulador autônomo que roda programas na arquitetura MIPS32 Ele lê e executa programas escritos em linguagem assembly O SPIM também nos fornece um debugger simples e um conjunto enxuto de serviços operacionais No entanto, ele não executa programas em linguagem de máquina SPIM implementa quase todo o conjunto de instruções da arquitetura MIPS32, sendo que algumas comparações entre números de ponto flutuante são omitidas A arquitetura MIPS inúmeras invariantes que se diferem entre si (ie, a MIPS64 tem capacidade para trabalhar com inteiros e endereços de 64 bits cada), o que significa que o simulador SPIM não irá executar programas em todos os processadores da arquitetura MIPS O programa SPIM é composto de quatro segmentos dispostos na janela principal e um console Cada área tem sua importância A primeira parte, chamada Registers, ficam os registradores internos do MIPS, independente de serem usados ou não no código aberto Seus valores são atualizados a cada instrução executada Podemos ver os valores sendo alterados, facilmente, usando um break point na primeira linha do código executando, então, instrução por instrução Na segunda área, Text Segment, fica o código *asm que foi importado e cada linha é associada com o endereço onde ela se encontra Algumas instruções podem ser trocadas por instruções equivalentes, mas na mesma linha se encontra mais a direita o código original A terceira parte, chamada de Data Segment, mostra os segmento de dados do usuário (DATA), a pilha (STACK) e o segmento de dados do kernel (KERNEL DATA) Elas são mostradas em duas colunas: o endereço do bloco de memória e o conteúdo do bloco O quarto segmento é o Messages, onde o simulador envia mensagens ao usuário Ao executar instrução por instrução como é o caso da figura, ele vai mostrando a instrução que
6 BCC/2012-2/AOC2/TP 6 está sendo executada E por fim, o console que é a comunicação programa/usuário; onde irão aparecer comandos de leitura de dados e escrita de resultados FIGURA 5 Imagem da execução do arquivo itoaasm no software PC SPIM Referências [1] KERNIGHAN, Brian W; RITCHIE, Dennis M The C Programming Language Upper Saddle River, New Jersey: Prentice hall, p [2] ASCII Corporation American Standard Code for Information Interchange Table In: < Acesso em: 26/03/2013 [3] PATTERSON, D, HENNESSY, J L, Organização e Projeto de Computadores: Interface Hardware/Software, Morgan Kaufmann Series; 4th Edition; 2009; [4] REED, D F, MIPS Architecture and Assembly Language Overview In; < Acesso em: 26/03/2013
O COMPUTADOR. Introdução à Computação
O COMPUTADOR Introdução à Computação Sumário O Hardware O Software Linguagens de Programação Histórico da Linguagem C Componentes Básicos do Computador O HARDWARE: O equipamento propriamente dito. Inclui:
Leia maisVariáveis e Comandos de Atribuição
BCC 201 - Introdução à Programação Variáveis e Comandos de Atribuição Guillermo Cámara-Chávez UFOP 1/47 Estrutura Básica de um programa C I < d i r e t i v a s do pré p r o c e s s a d o r > < d e c l
Leia maisNível da Arquitetura do Conjunto das Instruções
Nível da Arquitetura do Conjunto das Instruções (Aula 13) Fluxo de Controle Fluxo Seqüencial de Controle e Desvios (1) Fluxo de Controle: É a seqüência na qual instruções são dinamicamente executadas Isto
Leia maisArquitetura de Sistemas Digitais (FTL066) Instruções: Linguagem do Computador Segunda Lista de Exercícios
Arquitetura de Sistemas Digitais (FTL066) Instruções: Linguagem do Computador Segunda Lista de Exercícios 1) Explore conversões de números a partir de números binárias com sinal e sem sinal para decimal:
Leia maisINTRODUÇÃO À LINGUAGEM C++
INTRODUÇÃO À LINGUAGEM C++ 1 - VARIÁVEIS Variáveis espaço de memória reservado para armazenar tipos de dados, com um nome para referenciar seu conteúdo. Observações importantes Todas as variáveis devem
Leia maisAula 14: Instruções e Seus Tipos
Aula 14: Instruções e Seus Tipos Diego Passos Universidade Federal Fluminense Fundamentos de Arquiteturas de Computadores Diego Passos (UFF) Instruções e Seus Tipos FAC 1 / 35 Conceitos Básicos Diego Passos
Leia maisAlgoritmos e Estruturas de Dados I 01/2013. Estruturas Condicionais e de Repetição (parte 2) Pedro O.S. Vaz de Melo
Algoritmos e Estruturas de Dados I 01/2013 Estruturas Condicionais e de Repetição (parte 2) Pedro O.S. Vaz de Melo Problema 1 Suponha que soma (+) e subtração (-) são as únicas operações disponíveis em
Leia maisAlgoritmos e Programação
Universidade Federal do Vale do São Francisco Curso de Engenharia da Produção / Elétrica Algoritmos e Programação Parte 05 Prof. Jorge Cavalcanti jorge.cavalcanti@univasf.edu.br www.univasf.edu.br/~jorge.cavalcanti
Leia maisArquitectura de Computadores ARQC MIPS. Exemplos. Serviços de Sistema
Arquitectura de Computadores ARQC MIPS Exemplos 1 Serviços de Sistema 2 O MIPS tem 32 registradores de precisão simples (32 bits) para manipular números em ponto flutuante Registradores nomeados $f0 $f31
Leia maisAlgoritmo e Técnica de Programação - Linguagem C
Algoritmo e Técnica de Programação Linguagem C Gilbran Silva de Andrade 5 de junho de 2008 Introdução A liguagem C foi inventada e implementada por Dennis Ritchie em um DEC PDP-11 que utilizava o sistema
Leia maisArquitetura de Computadores. Linguagem de Máquina
Arquitetura de Computadores Linguagem de Máquina Ivan Saraiva Silva Formato de Instrução MAC O MIC possui dois formatos de instrução: 4 bits 12 bits Formato 1 CODOP ENDEREÇO 8 bits 8 bits Formato 2 CODOP
Leia maisMC102 Algoritmos e programação de computadores Aula 3: Variáveis
MC102 Algoritmos e programação de computadores Aula 3: Variáveis Variáveis Variáveis são locais onde armazenamos valores na memória. Toda variável é caracterizada por um nome, que a identifica em um programa,
Leia maisSoftware Básico. Conceito de Linguagem de Máquina e Montagem: introdução ao Assembly. Prof. MSc. Hugo Vieira L. Souza
Software Básico Conceito de Linguagem de Máquina e Montagem: introdução ao Assembly Prof. MSc. Hugo Vieira L. Souza Este documento está sujeito a copyright. Todos os direitos estão reservados para o todo
Leia maisLinguagens de Programação
68 Linguagens de Programação Uma linguagem de programação é um vocabulário e um conjunto de regras gramaticais usadas para escrever programas de computador. Esses programas instruem o computador a realizar
Leia maisComputadores de Programação (MAB353)
Computadores de Programação (MAB353) Aula 8: 04 de maio de 2010 1 Formatos de instruções MIPS 2 Endereçamento de operandos imediatos de 32 bits Endereçamento em desvios Modos de endereçamento do MIPS 3
Leia maisCapítulo 7 Nível da Linguagem Assembly
Capítulo 7 Nível da Linguagem Assembly Presente em quase todos os computadores modernos. Implementado por tradução. Linguagem fonte => Linguagem alvo. O programa no arquivo fonte não é executado diretamente
Leia maisArquitectura de Computadores
Arquitectura de Computadores Prof. Doutora Ana Isabel Leiria Ano Lectivo 2004/05 Prof. Doutora Margarida Madeira e Moura Eng. António Rosado Ano lectivo 2005/06 Pág. 1 Guias das aulas práticas 1. INTRODUÇÃO
Leia maisBACHARELADO EM SISTEMAS DE INFORMAÇÃO EaD UAB/UFSCar Sistemas de Informação - prof. Dr. Hélio Crestana Guardia
O Sistema Operacional que você usa é multitasking? Por multitasking, entende-se a capacidade do SO de ter mais de um processos em execução ao mesmo tempo. É claro que, num dado instante, o número de processos
Leia maisConvertendo Algoritmos para a Linguagem C
onvertendo Algoritmos para a Linguagem Notas de Aula Prof. Francisco Rapchan www.geocities.com/chicorapchan O objetivo deste texto é mostrar alguns programas em, dando uma breve descrição de seu funcionamento
Leia maisLinguagem C Tipos de Dados. void; escalares; sizeof Vectores; strings em C Estruturas Introdução ao pré-processador
Linguagem C Tipos de Dados void; escalares; sizeof Vectores; strings em C Estruturas Introdução ao pré-processador Funções void void pode ser usado em lugar de um tipo, para indicar a ausência de valor
Leia maisLINGUAGEM C. Estrutura básica de um programa
LINGUAGEM C Estrutura básica de um programa Um programa em linguagem C é constituído por uma sequência de funções (módulos) que em conjunto irão permitir resolver o problema proposto. Estas funções contêm
Leia maisUnidade 5: Sistemas de Representação
Arquitetura e Organização de Computadores Atualização: 9/8/ Unidade 5: Sistemas de Representação Números de Ponto Flutuante IEEE 754/8 e Caracteres ASCII Prof. Daniel Caetano Objetivo: Compreender a representação
Leia maisGuia Rápido MIPS. Tipos de Dados e Formatações
Tipos de Dados e Formatações Guia Rápido MIPS Tipos de Dados: Todas as instruções são de 32 bits Byte = 8 bits Halfword = 2 bytes Word = 4 bytes Um caractere ocupa 1 byte na memória Um inteiro ocupa 1
Leia maisVIII. VARIÁVEIS. Tabela I ARQUITETURA DA MEMÓRIA. 0x0000 0x34 0x0001 0xB0 0x0002 0x23. 0xFFFF 0x00
Fundamentos da Programação 32 A. Conceito Variáveis contém dados: VIII. VARIÁVEIS de entrada que o computador precisa manipular; de saída que o computador precisa imprimir; e temporários, utilizados de
Leia maisLTP-IV. Prof. Dr. Silvio do Lago Pereira. Departamento de Tecnologia da Informação Faculdade de Tecnologia de São Paulo
LTP-IV Prof. Dr. Silvio do Lago Pereira Departamento de Tecnologia da Informação Faculdade de Tecnologia de São Paulo Contato e-mail: slago@ime.usp.br home page: www.ime.usp.br/~slago apostila: Linguagem
Leia maisLinguagem C: variáveis, operadores, entrada/saída. Prof. Críston Algoritmos e Programação
Linguagem C: variáveis, operadores, entrada/saída Prof. Críston Algoritmos e Programação Linguagem C Linguagem de uso geral (qualquer tipo de aplicação) Uma das linguagens mais utilizadas Foi utilizada
Leia maisProgramação Engenharia Informática (11543) 1º ano, 1º semestre Tecnologias e Sistemas de Informação (6619) 1º ano, 1º semestre
Programação Engenharia Informática (11543) 1º ano, 1º semestre Tecnologias e Sistemas de Informação (6619) 1º ano, 1º semestre Cap. 02 Fundamentos de Linguagens Sumário : Linguagem, alfabeto e gramática
Leia maisFigure 2 - Nós folhas de uma árvore binária representando caracteres ASCII
A ocorrência tamanho ASCII codificação de Huffman é um A Codificação método de compactação de Huffman caracteres (American e a variável codificação dos usado símbolos Standard para por cada muitas no Code
Leia maisComputadores de Programação (MAB353)
Computadores de Programação (MAB353) Aula 7: 29 de abril de 2010 1 2 Subrotinas Um procedimento ou função é uma subrotina armazenada que executa uma tarefa específica baseada nos parâmetros de entrada
Leia maisDefinição de Programas de Computadores e Linguagem de Programação de Comutadores
Definição de Programas de Computadores e Linguagem de Programação de Comutadores O computador é um equipamento eletrônico composto por circuitos eletrônicos, que trabalham com o estado ligado(1) e desligado(0),
Leia maisPrincipais códigos utilizados. Codificação. Código binário puro. Codificação binária. Codificação Binária. Código Binário puro e suas variantes
Codificação Principais códigos utilizados Computadores e Equipamentos de Comunicações Digitais trabalham com representação e códigos. A codificação binária de sinais é largamente utilizada em Sistemas
Leia maisConceitos básicos da linguagem C
Conceitos básicos da linguagem C 2 Em 1969 Ken Thompson cria o Unix. O C nasceu logo depois, na década de 70. Dennis Ritchie, implementou-o pela primeira vez usando o sistema operacional UNIX criado por
Leia mais9 Comandos condicionais
9 Comandos condicionais Um comando condicional é uma instrução empregada quando se deseja criar um desvio, isto é, a opção de executar-se ou não um determinado trecho de código, segundo uma condição. Em
Leia maisProgramando em C++ Histórico da Linguagem C
Programando em C++ Joaquim Quinteiro Uchôa joukim@comp.ufla.br DCC-UFLA, 2002 Programando em C++ p.1/38 Histórico da Linguagem C Linguagem C: 1972 - Laboratório Bells, por Dennis Ritchie, a partir da linguagem
Leia maisARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES SISTEMAS DE NUMERAÇÃO: REPRESENTAÇÃO EM PONTO FLUTUANTE. Prof. Dr. Daniel Caetano 2012-1
ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES SISTEMAS DE NUMERAÇÃO: REPRESENTAÇÃO EM PONTO FLUTUANTE Prof. Dr. Daniel Caetano 2012-1 Objetivos Compreender o que é notação em ponto flutuante Compreender a
Leia maisLinguagem de Montagem 2. Operações e Operandos
Linguagem de Montagem 2 Operações e Operandos Revisão Para executar uma tarefa qualquer, um computador precisa receber instruções precisas sobre o que fazer Esse conjunto de instruções chamamos de algoritmo
Leia mais5 Apresentando a linguagem C
5 Apresentando a linguagem C O criador da linguagem de programação C foi Dennis Ritchie que, na década de 70, programou-a por meio de um computador DEC PDP-11 rodando sistema operacional Unix. Entretanto,
Leia maisArquitetura de Computadores. Assembly Miscelâneas. Mário O. de Menezes. http://www.tf.ipen.br/~mario
Arquitetura de Computadores Assembly Miscelâneas Mário O. de Menezes http://www.tf.ipen.br/~mario AC Mário O. de Menezes 1 Lembrando Instruções Lógicas e Shift operam em bits individuais, diferente de
Leia maisLinguagem C. TGSI Lógica de Programação / Linguagem C Prof. Marcos Roberto
Linguagem C O C nasceu na década de 70. Seu inventor, Dennis Ritchie, implementou-o pela primeira vez usando um DEC PDP-11 rodando o sistema operacional UNIX. O C é derivado de uma outra linguagem: o B,
Leia maisIntrodução à Arquitetura de Computadores
1 Introdução à Arquitetura de Computadores Hardware e software Organização de um computador: Processador: registradores, ALU, unidade de controle Memórias Dispositivos de E/S Barramentos Linguagens de
Leia maisManual de Instalação da Plataforma Scorpion. 1. Como conectar a Plataforma Scorpion com a Xilinx Starter-3E kit
Manual de Instalação da Plataforma Scorpion 1. Como conectar a Plataforma Scorpion com a Xilinx Starter-3E kit Para começar a ler este manual, é bom que você conheça os componentes desta conexão. Plataforma
Leia maisLinguagem C. Programação Estruturada. Fundamentos da Linguagem. Prof. Luis Nícolas de Amorim Trigo nicolas.trigo@ifsertao-pe.edu.
Programação Estruturada Linguagem C Fundamentos da Linguagem Prof. Luis Nícolas de Amorim Trigo nicolas.trigo@ifsertao-pe.edu.br Sumário Estrutura Básica Bibliotecas Básicas Tipos de Dados Básicos Variáveis/Declaração
Leia mais1. Os caracteres (p.ex: a, A, 8,!, +, etc) são representados no computador através da codificação ASCII (American Standard Code for
FICHA DE TRABALHO Nº 1 MÓDULO: EQUIPAMENTOS ACTIVOS DE REDES DATA: / 03 / 2010 FORMADOR: EDUARDO SEQUEIRA FICHA LABORATORIAL 1. Os caracteres (p.ex: a, A, 8,!, +, etc) são representados no computador através
Leia maisArquitetura de Computadores Moderna
Arquitetura de Computadores Moderna Eduardo Barrére (eduardo.barrere@ice.ufjf.br) DCC/UFJF Baseado no material do prof. Marcelo Lobosco Agenda Visão Geral Objetivos do Curso Ementa Bibliografia Avaliações
Leia maisCapítulo 3 Aula 8. Representação Numérica. Aritmética Computacional Representação Numérica
Universidade de Brasília Instituto de Ciências Exatas Departamento de Ciências da Computação Capítulo 3 Aula 8 Aritmética Computacional Representação Numérica 1 Representação Numérica Base binária (base
Leia maisE/S CPU. Memória (Instruções e dados) 2 PARADIGMA IMPERATIVO. Instruções e dados. Resultados das operações. Unidade lógica e aritmética
2 PARADIGMA IMPERATIVO 2.1 CONCEITO As linguagens que pertencem ao paradigma imperativo tomam por base a perspectiva da máquina. Ou seja, no modo como o computador executa programas em linguagem de máquina.
Leia maisLinguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery
Linguagem de Programação JAVA Técnico em Informática Professora Michelle Nery Agenda Regras paravariáveis Identificadores Válidos Convenção de Nomenclatura Palavras-chaves em Java Tipos de Variáveis em
Leia maisLinguagem de Programação I
Linguagem de Programação I Curso de Sistemas de Informação Karla Donato Fook karladf@ifma.edu.br DESU / DAI 2016 Linguagem de Programação C 2 1 Linguagem de Programação C Os programas em C consistem em
Leia maisLinguagem de Programação
Linguagem de Programação Introdução a Linguagem C Princípios de Programação em C Gil Eduardo de Andrade Conceitos Iniciais: Linguagem C Introdução É uma linguagem estruturada; Foi desenvolvida na década
Leia maisA declaração de uma variável vel define o seu tipo. O tipo do dado define como ele será: Armazenado na memória. Manipulado pela ULA.
Representação de Dados Tipos de dados: Caracteres (letras, números n e símbolos). s Lógicos. Inteiros. Ponto flutuante: Notações decimais: BCD. A declaração de uma variável vel define o seu tipo. O tipo
Leia maisSistemas Operacionais. Curso Técnico Integrado Profa: Michelle Nery
Sistemas Operacionais Curso Técnico Integrado Profa: Michelle Nery Conteúdo Programático CONTAS DE E GRUPOS DE O Microsoft Management Console - MMC Permissões de Segurança de um Console Contas de Usuários
Leia maisArquitetura de Computadores
Universidade Federal de Santa Catarina Centro Tecnológico Curso de Pós-Graduação em Ciência da Computação Aula 2 Arquitetura do Processador MIPS: características gerais, registradores, formatos de instrução,
Leia maisIntrodução à Arquitetura de Computadores. Renan Manola Introdução ao Computador 2010/01
Introdução à Arquitetura de Computadores Renan Manola Introdução ao Computador 2010/01 Introdução Conceitos (1) Computador Digital É uma máquina que pode resolver problemas executando uma série de instruções
Leia mais1. Fazer um programa em C que pergunta um valor em metros e imprime o correspondente em decímetros, centímetros e milímetros.
Lista de exercícios: Grupo I - programa seqüênciais simples 1. Fazer um programa em C que pergunta um valor em metros e imprime o correspondente em decímetros, centímetros e milímetros. 2. Fazer um programa
Leia mais1. SINTAXE DA LINGUAGEM ASSEMBLY
1. SINTAXE DA LINGUAGEM ASSEMBLY Antes de se escrever em assembly, é conveniente construir um fluxograma do programa. Um fluxograma não faz referência à linguagem a utilizar, pelo que pode ser utilizado
Leia mais5 - Vetores e Matrizes Linguagem C CAPÍTULO 5 VETORES E MATRIZES
CAPÍTULO 5 5 VETORES E MATRIZES 5.1 Vetores Um vetor armazena uma determinada quantidade de dados de mesmo tipo. Vamos supor o problema de encontrar a média de idade de 4 pessoas. O programa poderia ser:
Leia maisProgramação Funcional. Aula 5. Funções Recursivas. José Romildo Malaquias. Departamento de Computação Universidade Federal de Ouro Preto 2011.
Programação Funcional Aula 5 Funções Recursivas José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2011.2 1/39 1 Funções recursivas 2 Recursividade mútua 3 Recursividade
Leia maisTrabalho 3: Agenda de Tarefas
INF 1620 Estruturas de Dados Semestre 08.2 Trabalho 3: Agenda de Tarefas O objetivo deste trabalho é a implementação de um conjunto de funções para a manipulação de uma agenda de tarefas diárias, de forma
Leia maisAutor: Tiago Lone Nível: Básico Criação: 19/12/2005 Última versão: 18/12/2006. PdP. Pesquisa e Desenvolvimento de Produtos
TUTORIAL Barra de LEDs Autor: Tiago Lone Nível: Básico Criação: 19/12/2005 Última versão: 18/12/2006 PdP Pesquisa e Desenvolvimento de Produtos http://www.maxwellbohr.com.br contato@maxwellbohr.com.br
Leia maisUsando um Simulador da Máquina de Turing Claudio Kirner 2010
1. Introdução Usando um Simulador da Máquina de Turing Claudio Kirner 2010 A Máquina de Turing, idealizada por Alan Turing, em 1936, é uma máquina teórica simples capaz de calcular qualquer função matemática.
Leia maisAlgoritmos e Programação Estruturada
Algoritmos e Programação Estruturada Virgínia M. Cardoso Linguagem C Criada por Dennis M. Ritchie e Ken Thompson no Laboratório Bell em 1972. A Linguagem C foi baseada na Linguagem B criada por Thompson.
Leia maisTabela ASCII de caracteres de controle
Caracteres Estruturas de Dados Aula 6: Cadeias de Caracteres 31/03/2010 Caracteres são representados internamente por códigos numéricos Tipo char (inteiro pequeno ) 1 byte (8 bits) 256 caracteres possíveis
Leia mais3 A Biblioteca para Implementação de Máquinas Virtuais
A Biblioteca para Implementação de Máquinas Virtuais 24 3 A Biblioteca para Implementação de Máquinas Virtuais O processo de criação e experimentação de uma máquina virtual no escopo deste trabalho é ilustrada
Leia maisSistema de Numeração e Códigos. CPCX UFMS Prof. Renato F. dos Santos
Sistema de Numeração e Códigos CPCX UFMS Prof. Renato F. dos Santos 2.4 Código BCD (Binary-coded decimal) Quando um número decimal é representado pelo seu número binário equivalente, dizemos que é uma
Leia maisComputadores Digitais 2. Prof. Rodrigo de Souza Couto
Computadores Digitais 2 Linguagens de Programação DEL-Poli/UFRJ Prof. Miguel Campista Aula de Hoje Cadeias de caracteres (strings) Caracteres Definição e manipulação de strings Vetor de strings Parâmetros
Leia maisString em C++ Verificando o tamanho da string
String em C++ Uma das formas de se manipular cadeias de caracteres, também chamadas de strings em C+ + é armazená-las como vetores de char. Esta é a forma tradicional utilizada pela linguagem C. Então,
Leia maisOrganização de Computadores 1
Organização de Computadores 1 5 CONJUNTO DE INSTRUÇÕES Prof. Luiz Gustavo A. Martins Introdução O que é um conjunto de instruções? Coleção completa das instruções que a CPU é capaz de executar (entende).
Leia maisProgramação Estruturada I
Programação Estruturada I Introdução a Linguagem C Prof. Thiago Caproni Tavares 1 Prof. Mateus dos Santos 2 1 thiago.tavares@ifsuldeminas.edu.br 2 mateus.santos@ifsuldeminas.edu.br Última Atualização:
Leia maisP r o g r a m a ç ã o d e C o m p u t a d o r e s 1 o S e m - 2 0 1 3 P r o f. A n d r é A m a r a n t e L u i z L A B 5 tag %2d while printf PE1:
Inteligência É a faculdade de criar objetos artificiais, especialmente ferramentas para fazer ferramentas. Henri Bergson. WHILE Além dos comandos if-else e switch, o controle de fluxo de um programa pode
Leia maishttp://www.risesecurity.org Rodrigo Rubira Branco rodrigo@kernelhacking.com rodrigo@risesecurity.org
Ataques Polimórficos Rodrigo Rubira Branco rodrigo@kernelhacking.com rodrigo@risesecurity.org A idéia - Detectores de intrusos utilizam-se de assinaturas de ataques para identificação dos mesmos - Sistemas
Leia maisIntrodução a Java. Hélder Nunes
Introdução a Java Hélder Nunes 2 Exercício de Fixação Os 4 elementos básicos da OO são os objetos, as classes, os atributos e os métodos. A orientação a objetos consiste em considerar os sistemas computacionais
Leia maisGUIA DE FUNCIONAMENTO DA UNIDADE CURRICULAR
Curso Engenharia Informática Ano letivo 2012-2013 Unidade Curricular Arquitectura de Computadores ECTS 6 Regime Obrigatório Ano 2º Semestre 2ºsem Horas de trabalho globais Docente (s) Luis Figueiredo Total
Leia maisPCS 3111 - LABORATÓRIO DE PROGRAMAÇÃO ORIENTADA A OBJETOS PARA A ENGENHARIA ELÉTRICA
ESCOLA POLITÉCNICA DA UNIVERSIDADE DE SÃO PAULO Departamento de Engenharia de Computação e Sistemas Digitais PCS - LABORATÓRIO DE PROGRAMAÇÃO ORIENTADA A OBJETOS PARA A ENGENHARIA ELÉTRICA EXERCÍCIO PROGRAMA
Leia maisORGANIZAÇÃO DE COMPUTADORES MÓDULO 1
ORGANIZAÇÃO DE COMPUTADORES MÓDULO 1 Índice 1. Introdução...3 1.1. O que é um Computador?... 3 1.2. Máquinas Multiníveis... 3 2 1. INTRODUÇÃO 1.1 O QUE É UM COMPUTADOR? Para estudarmos como um computador
Leia mais20 Caracteres - Tipo char
0 Caracteres - Tipo char Ronaldo F. Hashimoto e Carlos H. Morimoto Até agora vimos como o computador pode ser utilizado para processar informação que pode ser quantificada de forma numérica. No entanto,
Leia maisJSP - ORIENTADO A OBJETOS
JSP Orientação a Objetos... 2 CLASSE:... 2 MÉTODOS:... 2 Método de Retorno... 2 Método de Execução... 2 Tipos de Dados... 3 Boolean... 3 Float... 3 Integer... 4 String... 4 Array... 4 Primeira:... 4 Segunda:...
Leia maisSistemas Operacionais. Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com
Sistemas Operacionais Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com Estruturas de Sistemas Operacionais Um sistema operacional fornece o ambiente no qual os programas são executados. Internamente,
Leia maisProgramação Orientada a Objeto
Programação Orientada a Objeto Classes, Atributos, Métodos e Objetos Programação de Computadores II Professor: Edwar Saliba Júnior 1) Java é uma linguagem orientada a objetos. Para que possamos fazer uso
Leia mais10/02/2015. Introdução. Podemos classificar os tipos de dados a serem processados em dados e instruções Dados: Algoritmos e Lógica de Programação
Introdução Algoritmos e Lógica de Programação Tipos de dados Podemos classificar os tipos de dados a serem processados em dados e instruções Dados: Informações a serem processadas pelo computador. Consideremos
Leia maisUnidade: Unidade Lógica e Aritmética e Registradores. Unidade I:
Unidade: Unidade Lógica e Aritmética e Registradores Unidade I: 0 Unidade: Unidade Lógica e Aritmética e Registradores UNIDADE LÓGICA E ARITMÉTICA E REGISTRADORES O Processador é um chip com milhares de
Leia maisIntrodução à Arquitetura e Linguagem Assembly de Processadores IA-32
Introdução à Arquitetura e Linguagem Assembly de Processadores IA-32 Sistemas da Computação Prof. Rossano Pablo Pinto, Msc. rossano at gmail com 2 semestre 2007 CHIP Ano MHz Transistors Mem 8086 1978 5
Leia maisLaboratório de Hardware
Laboratório de Hardware Prof. Marcel Santos Responsável por implementar em software um recurso que não existe no hardware. O hardware oferece simplesmente um grande conjunto de bytes contíguos, e a tarefa
Leia maisComputação II Orientação a Objetos
Computação II Orientação a Objetos Fabio Mascarenhas - 2014.1 http://www.dcc.ufrj.br/~fabiom/java Introdução Esse não é um curso de Java! O objetivo é aprender os conceitos da programação orientada a objetos,
Leia maisSOP - TADS Sistemas de Arquivos Cap 4 Tanenmbaum
SOP - TADS Sistemas de Arquivos Cap 4 Tanenmbaum Prof. Ricardo José Pfitscher dcc2rjp@joinville.udesc.br Material cedido por: Prof. Rafael Rodrigues Obelheiro Prof. Maurício Aronne Pillon Cronograma Introdução
Leia maisCircuitos Digitais 144L
Circuitos Digitais Notas de Aula - 02 INSTITUTO: CURSO: DISCIPLINA: Instituto de Ciências Exatas e Tecnologia Ciência da Computação e Sistemas de Informação Circuitos Digitais 144L 1.0 Circuitos Combinacionais.
Leia maisMontagem e Manutenção. Luís Guilherme A. Pontes
Montagem e Manutenção Luís Guilherme A. Pontes Introdução Qual é a importância da Montagem e Manutenção de Computadores? Sistema Binário Sistema Binário Existem duas maneiras de se trabalhar e armazenar
Leia maisAmbiente de desenvolvimento de Programação Assembly MCU 8051 IDE
SEL-433 APLICAÇÕES DE MICROPROCESSADORES I Prof. Evandro L. L. Rodrigues Ambiente de desenvolvimento de Programação Assembly MCU 8051 IDE http://mcu8051ide.sourceforge.net/ Tela inicial Criar novo projeto:
Leia maisAlgoritmos DCC 119. Introdução e Conceitos Básicos
Algoritmos DCC 119 Introdução e Conceitos Básicos Sumário Sistemas de Numeração Sistemas Computacionais Estrutura de um Computador Digital Sistemas Operacionais Algoritmo Introdução Formas de representação
Leia maisAula de JavaScript 05/03/10
Objetos Sabe-se que variável são contêiners que podem armazenar um número, uma string de texto ou outro valor. O JavaScript também suporta objetos. Objetos são contêiners que podem armazenar dados e inclusive
Leia maisIntrodução ao Paradigma Orientado a Objetos. Principais conceitos
Introdução ao Paradigma Orientado a Objetos Principais conceitos Paradigmas de Programação PROGRAMAÇÃO ESTRUTURADA X PROGRAMAÇÃO ORIENTADA A OBJETOS Paradigma Programação estruturada Na programação estrutura
Leia maisLP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br
LP II Estrutura de Dados Introdução e Linguagem C Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br Resumo da aula Considerações Gerais Introdução a Linguagem C Variáveis e C Tipos de
Leia maisI n f o r m á t i c a
Prof. Dr. Rogério R. de Vargas I n f o r m á t i c a Dados, bits, bytes, representação de dados e sistemas de numeração e representação numérica Itaqui - RS, 2º Semestre de 2014. Agenda Dados; Bits; Bytes;
Leia maisITENS FUNDAMENTAIS. Profª Angélica da Silva Nunes
ITENS FUNDAMENTAIS Profª Angélica da Silva Nunes CONCEITOS BÁSICOS Hardware - é a parte física do computador, tais como: teclado, monitor de vídeo, etc. Software - são os programas e aplicativos que permitem
Leia maisAlgoritmos Estruturas Seqüenciais. José Gustavo de Souza Paiva
Algoritmos Estruturas Seqüenciais José Gustavo de Souza Paiva 1 Introdução Objetivo básico da computação auxiliar os seres humanos em trabalhos repetitivos e braçais, diminuindo i i d esforços e economizando
Leia maisCarga horária : 4 aulas semanais (laboratório) Professores: Custódio, Daniel, Julio foco: introdução a uma linguagem de programação Linguagem Java
Carga horária : 4 aulas semanais (laboratório) Professores: Custódio, Daniel, Julio foco: introdução a uma linguagem de programação Linguagem Java 1 Objetivo: O aluno deverá adquirir capacidades e habilidades
Leia maisLaboratório de Programação. Prof. Oscar Luiz Monteiro de Farias fariasol@gmail.com
Laboratório de Programação Prof. Oscar Luiz Monteiro de Farias fariasol@gmail.com Ementa: Equivalente ao sumário do livro: The C Programming Language, Second edition. Autores: Brian W. Kernighan, Dennis
Leia maisProgramação científica C++
Programação científica C++ NIELSEN CASTELO DAMASCENO Slide 4 Aluno que não sabe programar int main() { cout
Leia maisMODOS DE ENDEREÇAMENTO
UNINGÁ UNIDADE DE ENSINO SUPERIOR INGÁ FACULDADE INGÁ DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO ERINALDO SANCHES NASCIMENTO MODOS DE ENDEREÇAMENTO MARINGÁ 2014 SUMÁRIO 6 MODOS DE ENDEREÇAMENTO...2 6.1 ENDEREÇAMENTO
Leia maiscompreender a importância de cada estrutura de controle disponível na Linguagem C;
Aula 3 Estruturas de controle Objetivos Esperamos que, ao final desta aula, você seja capaz de: compreender a importância de cada estrutura de controle disponível na Linguagem C; construir programas em
Leia mais