A arquitectura IA32. A arquitectura de um processador é caracterizada pelo conjunto de atributos que são visíveis ao programador. - PDF
Download "A arquitectura IA32. A arquitectura de um processador é caracterizada pelo conjunto de atributos que são visíveis ao programador."
Nathalia Zagalo Bardini
1 A arquitectura IA32 A arquitectura de um processador é caracterizada pelo conjunto de atributos que são visíveis ao programador. Tamanho da palavra Número de registos visíveis Número de operandos Endereçamento de operandos O conjunto de instruções AC1 Arquitectura do Conjunto de Instruções 1
2 IA32 O tamanho da palavra Este é um parâmetro fundamental do sistema que determina, em bits: o tamanho, por defeito, dos números inteiros o tamanho dos endereços o tamanho dos registos de uso genérico O IA32 tem uma palavra de 32 bits, mas, por razões históricas, são as quantidades de 16 bits que são referenciadas como palavras (w), sendo as quantidades de 32 bits referenciadas como palavras longas (l). 32 bits permitem endereçar 2 32 bytes = 4 Gbytes AC1 Arquitectura do Conjunto de Instruções 2
3 IA32 Registos visíveis 8 registos genéricos de 32 bits acessíveis em quantidades de 8 e 16 bits %ax, %bx, %cx, %dx 16 bits menos significativos dos respectivos registos %ah, %bh, %ch, %dh 2º byte menos significativo dos respectivos registos %al, %bl, %cl, %dl byte menos significativo dos respectivos registos Apesar de genéricos, alguns destes registos são implicitamente usados por algumas instruções: %eax, %esp. AC1 Arquitectura do Conjunto de Instruções 3
4 Número de operandos a = b + c; uma operação aritmética binária tem 3 operandos. O conjunto de instruções de uma máquina pode suportar um número diferente de operandos: 0 operandos os operandos estão no topo da stack e o resultado é posto no topo da mesma; EX: add => push (pop+pop) 1 operando um dos operando e o destino da operação é um registo designado por acumulador; EX: add b => acc = acc + b 2 operandos um dos operandos funciona também como destino da operação; EX: add b,c => c = c + b 3 operandos todos os operandos são especificados na instrução; EX: add b,c,d => b = c + d AC1 Arquitectura do Conjunto de Instruções 4
5 IA32 2 operandos addl %eax, %ebx movl %eax, %ebx subl %eax, %ebx imull %esi, %esp ; %ebx = %ebx+%eax ; %ebx = %eax ; %ebx = %ebx-%eax ; %esp = %esp * %esi (32 bits) mas também existem instruções de 1 operando: incl %ecx imull %ecx ; %ecx = %ecx+1 ; %edx:%eax = %eax * %ecx (64 bits) AC1 Arquitectura do Conjunto de Instruções 5
6 IA32 Modos de endereçamento Como indicar numa instrução quais os operandos? Registos O valor do operando é o valor armazenado no registo. Constante (modo imediato) O valor do operando é uma constante especificada na instrução. addl %eax, %esi %esi = %esi + %eax addl $5, %esi %esi = %esi + 5 AC1 Arquitectura do Conjunto de Instruções 6
7 IA32 Modos de endereçamento Um, e apenas um, dos operandos pode estar armazenado em memória. Como especificar o endereço de memória? O endereço é o resultado da avaliação da expressão: Endereço = Base + Índice*Escala + Deslocamento onde: Base e Índice são registos Escala é uma constante com o valor 1, 2, 4 ou 8 Deslocamento é uma constante com 32 bits no máximo NOTA: Qualquer um destes campos pode estar omisso! AC1 Arquitectura do Conjunto de Instruções 7
8 IA32 Modos de endereçamento addl %eax, 1000(%ebp, %esi, 4) Significado: somar a %eax a palavra (4 bytes) cujo endereço começa em %ebp + %esi* Resultado guardado em memória. andl (,%eax, 8), %edx Significado: AND da palavra (4 bytes) cujo endereço começa em %eax*8 com o conteúdo de %edx. Onde fica o resultado? subw %ax, 0x70AA Significado: somar à palavra (2 bytes) cujo endereço começa em 0x70AA o valor de %ax. Resultado guardado em memória. AC1 Arquitectura do Conjunto de Instruções 8
9 IA32 Modos de endereçamento AC1 Arquitectura do Conjunto de Instruções 9
10 IA32 Modos de endereçamento Memória Endereço Valor 0x100 0xFF 0x104 0xAB 0x108 0X13 0x10C 0x11 Registo Valor %eax 0x100 %ecx 1 %edx 3 Operando %eax (%eax) 0x104 $0x104 4(%eax) (%eax,%ecx,8) 0x100(%ecx, %edx) 0x104(,%ecx,8) Valor 0x100 0xFF 0xAB 0x104 0xAB 0x13 0xAB 0x11 AC1 Arquitectura do Conjunto de Instruções 10
11 IA32 O conjunto de instruções: operações lógico-aritméticas 2 operandos add? src, dest sub? src, dest and? src, dest imull? src, dest sar? shamt5, dest onde? b, w, l shamt5 [0..31] 1 operando inc? dest dec? dest imull src %edx:%eax = %eax * src idivl src %edx = %eax mod src %eax = %eax / src onde? b, w, l AC1 Arquitectura do Conjunto de Instruções 11
12 IA32 O conjunto de instruções: operações de transferência de informação mov? src, dest lea? Imm(R1, R2, s), dest onde? b, w, l pushl src popl dest Stack AC1 Arquitectura do Conjunto de Instruções 12
13 IA32 A stack Estrutura de dados mantida em memória, do tipo LIFO. O stack pointer (%esp) aponta para o topo da stack. Esta cresce de endereços mais altos para endereços mais baixos. pushl subtrai 4 ao %esp e carrega uma palavra na memória. popl lê uma palavra da stack e soma 4 ao %esp. %eax %edx 0xf09 0x0 push %eax %eax %edx 0xf09 0x0 pop %edx %eax %edx 0xf09 0xf09 %esp 0x508 %esp 0x504 %esp 0x508 0x500 0x500 0x500 0x504 0x504 0xf09 0x504 0x508 0x508 0x508 0x50c 0x50c 0x50c 0x510 0x510 0x510 AC1 Arquitectura do Conjunto de Instruções 13
14 IA32 O conjunto de instruções: Flags e operações de teste 4 flags: variam conforme o resultado da última operação ZF = 1 se zero SF = 1 se < zero CF = 1 se transporte OF = 1 se overflow cmp? src1, src2 # src2 src1 # resultado não é guardado test? src1, src2 # src2 AND src1 # resultado não é guardado AC1 Arquitectura do Conjunto de Instruções 14
15 IA32 O conjuntos de instruções: Operações de controlo de fluxo jmp label jmp *src Saltos Incondicionais Saltos Condicionais (testam as flags) je label js label jg label jl label jne label jns label jge label jle label AC1 Arquitectura do Conjunto de Instruções 15
16 IA32 O Conjuntos de instruções: Invocação de procedimentos call label call *Op # coloca endereço de retorno na stack ret # lê endereço de retorno da stack leave # realiza algumas operações relacionadas com o acesso a # variáveis locais e parâmetros AC1 Arquitectura do Conjunto de Instruções 16
17 Sumário Tema Hennessy [COD] Bryant [CS:APP] IA32 Sec 3.4 a AC1 Arquitectura do Conjunto de Instruções 17
Procedimentos Chamada de Funções e Parâmetros
Procedimentos Chamada de Funções e Parâmetros Noemi Rodriguez Ana Lúcia de Moura http://www.inf.puc-rio.br/~inf1018 Memória Durante a execução de um programa, o SO precisa alocar memória principal para:
Análise do Instruction Set Architecture (5) x86-64: 64-bit extension to Intel 64: Intel implementation of x86-64 Estrutura do tema ISA do 1. Desenvolvimento de programas no em Linux 2. Acesso a operandos
Arquitectura de Computadores Y86 Sequencial. Créditos Randal E. Bryant http://csapp.cs.cmu.edu
Arquitectura de Computadores Y86 Sequencial Créditos Randal E. Bryant http://csapp.cs.cmu.edu Y86 - Jogo de Instruções Octeto 0 1 2 3 4 5 nop 0 0 halt 1 0 rrmovl ra, rb 2 0 ra rb irmovl V, rb 3 0 8 rb
Introdução aos Sistemas Computacionais 2008/09
Introdução aos Sistemas Computacionais 2008/09 Departamento de Informática da Faculdade de Ciências da Universidade de Lisboa Fascículo ASM1 Introdução ao Assembly 1. Introdução ao Tema O processador de
Nome: Introdução aos Sistemas Computacionais 2008/09 Exame 2ª Época 6 Fevereiro 2009 ATENÇÃO: A duração da prova é de 3 horas. Só poderá haver desistências após a primeira hora. Não é permitido o uso de
34 dígitos 28 dígitos 62 dígitos significativos! (base 10!)
Programação ao nível da máquina Representação de números em vírgula flutuante Programação da unidade de vírgula flutuante no IA-32 A arquitectura Intel IA-32 na sua totalidade Representação de números
Assembly para o Assemblador da GNU Arquitectura Intel IA- Versão 0.4 Filipe Machado de Araújo Outubro de 2005 Assembly para o Assemblador da GNU Arquitectura Intel IA- Versão 0.4 UNIVERSIDADE DE LISBOA
Software de Telecomunicações Tópicos de Assembly86
Software de Telecomunicações Tópicos de Assembly86 Rui Gustavo Crespo IST/DEEC@2005 Software de Telecomunicações Asm86 : 1/69 Pentium arquitectura (1) O Pentium adopta arquitectura CISC reduzido número
Conjunto de Instruções do 8051
Apêndice B Conjunto de Instruções do 8051 A.G. e E.T.M. / 2001 (revisão) O 8051 apresenta 111 tipos de instruções, sendo 49 de um byte, 45 de dois bytes e 17 de três bytes. Levando-se em contas as variações
Introdução da memória de programa
Introdução da memória de programa clock dados load_ir instrução IR CE 1xx 001 0 emória RO endereco Contém instruções (2 bytes) Q enable Contador de Programa (PC) inc_pc Unidade de Controlo OPR B FLGS R
GUIÃO DE Introdução aos Sistemas Computacionais CADERNO DE EXERCÍCIOS 5ªedição Teresa Chambel, Dulce Domingos, Nuno Neves, Miguel Correia e Filipe Araújo DI-FCUL GU ISC 05 10 Setembro 2005 Departamento