Baixe o app para aproveitar ainda mais
Prévia do material em texto
ORGANIZAÇÃO DE COMPUTADORES Linguagens assembly, compilação e desempenho4 A resposta correta da questão está identificada com a cor Vermelha. ATIVIDADE PARA AVALIAÇÃO (2 pontos) Suponha a seguinte instrução do ISA do processador ARM: LDRH r11, [r0]. Assumindo que no registrador r0 temos armazenado 0x8000 e que em r11 temos 0x12345678, informe o conteúdo de r11 após a execução dessa instrução, sabendo que na memória temos os seguintes valores armazenados: MEMÓRIA Endereço Conteúdo 0x8000 0xEE 0x8001 0xFF 0x8002 0x90 0x8003 0xA7 JUSTIFICATIVA A instrução LDRH do ARM trabalha com meia palavra, ou seja, 16 bits. Portanto, após a execução, carrega o byte de menor endereço no byte menos significativo de r11, o próximo no segundo byte, zerando os dois bytes mais significativos, formando, então, a palavra 0x0000FFEE. 1. 0xA790FFEEa. 0XEEFF90A7b. 0x0000FFEEc. 0x0000EEFFd. 0x000090A7e. 0x0000A790f. (2 pontos) Seja o seguinte trecho de programa em Assembly x86: 2. ......... XOR EAX, EAX XOR EBX, EBX MOV CX,10 VOLTA: ADD EAX, W[EBX] ADD EBX,4 LOOP VOLTA .......... Esse trecho executa que função? JUSTIFICATIVA Calcula a somatória de 10 números de 32 bits, pois os registradores são de 32 bits e o incremento do loop é 4, ou seja, varre o vetor W de 4 em 4 bytes (32 bits). A somatória é armazenada em EAX. Ordena um vetor de 10 posições, apontado por W, em que cada posição tem 16 bits.a. Calcula a média de 10 números de 32 bits, armazenados em um vetor W.b. Calcula a somatória de 10 números de 16 bits, armazenados em um vetor W.c. Ordena um vetor de 10 posições, apontado por W, que tem cada posição tem 32 bits.d. Calcula a média de 10 números de 16 bits, armazenados em um vetor w.e. Calcula a somatória de 10 números de 32 bits, armazenados em um vetor W.f. (2 pontos) Seja a seguinte sequência de código MIPS: ..... sub $t2, $zero, $t3 slt $at, $zero, $t3 beq $at, $zero, fim add $t2, $t3, $zero fim: ...... Escolha a alternativa que indica o que esse código faz: 3. Armazena em t2, a raiz quadrada do número armazenado em t3.a. Verifica se o conteúdo de t3 é zero.b. JUSTIFICATIVA O código armazena em t3 o valor absoluto do número armazenado em t2, portanto, calcula o valor absoluto de um número que está em t2. sub $t2, $zero, $t3 # t2=-t3 slt $at, $zero, $t3 # se t3 for negativo $at = 1, caso contrário $at = 0 beq $at, $zero, fim # se t3 <= zero t2 tem o abs add $t2, $t3, $zero # se t3 > 0 coloco em t2 fim: Armazena em t2, o valor absoluto do valor armazenado em t3.c. Verifica se o conteúdo de t2 é zero.d. Armazena em t3, o valor absoluto do valor armazenado em t2.e. Armazena em t3, a raiz quadrada do número armazenado em t2.f. (2 pontos) Qual das alternativas completa o texto abaixo de maneira correta? Um arquivo de código __________, criado no processo de compilação, após a montagem, é formado por um __________ que contém informações sobre o tamanho e a posição das várias partes dele, como: 1. o segmento de __________ que contém o código em linguagem de máquina; 2. o segmento de dados __________ (alocados pelo próprio programa) e de dados __________ (alocados à medida da necessidade do programa); 3. informações sobre __________, que permitem a alocação do programa em qualquer parte da memória; 4. a tabela de __________, que contém símbolos não resolvidos (referências externas); e 5. as informações para __________, que contêm informações de como os módulos foram compilados para o depurador. JUSTIFICATIVA Um arquivo de código objeto, criado no processo de compilação, após a montagem, é formado por um cabeçalho, que contém informações sobre o tamanho e a posição das várias partes dele, como: 1. o segmento de texto que contém o código em linguagem de 4. executável, cabeçalho, dados, dinâmicos, estáticos, relocação, símbolos, execuçãoa. objeto, apêndice, texto, dinâmicos, estáticos, montagem, variáveis, compilaçãob. objeto, cabeçalho, texto, estáticos, dinâmicos, relocação, símbolos, debugc. alto nível, cabeçalho, texto, estáticos, dinâmicos, relocação, símbolos, debugd. executável, cabeçalho, texto, estáticos, dinâmicos, relocação, símbolos, debuge. máquina; 2. o segmento de dados estáticos (alocados pelo próprio programa) e de dados dinâmicos (alocados à medida da necessidade do programa); 3. informações sobre relocação, que permitem a alocação do programa em qualquer parte da memória; 4. a tabela de símbolos, que contém símbolos não resolvidos (referências externas); e 5. as informações para debug, que contêm informações de como os módulos foram compilados para o depurador. (ANULADA) Supondo a seguinte sequência de código em linguagem de montagem (linguagem assembly) INTEL x86: ........ MOV EAX, 0x7FFFFFFF MOV EBX, 0x80000000 CMP EAX, EBX INST SALTO ........ Quais afirmativas abaixo são verdadeiras? JUSTIFICATIVA II. Se INST for JG (jump if grather than), ele supõe que os números são sinalizados e, portanto, executa o salto, uma vez que 0x7FFFFFFF é maior que 0x80000000 e os valores dos FLAGS, após a execução de CMP, serão ZF = 0 e SF = OF. III. Se INST for a instrução JA (jump if above), ele supõe que os números são não sinalizados e, portanto, não executa o salto, uma vez que 0x7FFFFFFF é menor que 5. Se INST for a instrução JA (jump if above), como os valores dos FLAGS ZF = 0 e CF = 0, o salto será executado. 1. Se INST for a instrução JG (jump if grather than), como os valores dos FLAGS ZF = 0 e SF = OF, o salto será executado. 2. Se INST for a instrução JA (jump if above), como os valores dos FLAGS ZF = 0 e CF = 1, o salto não será executado. 3. Se INST for a instrução JG (jump if grather than), como os valores dos FLAGS ZF = 0 e SF = OF, o salto não será executado. 4. Afirmativas III e VI.a. Afirmativas I e IV.b. Afirmativas I e II.c. Afirmativas II e III.d. Nenhuma afirmativa é verdadeira.e. 0x80000000 e os valores dos FLAGS, após a execução de CMP, seriam ZF = 0 e CF = 1, o salto não será executado.
Compartilhar