Capítulo 2: Instruções Flashcards

- Operações - Operandos - Sinal e sem sinal - Representando instruções - Operações lógicas - Decisões - Funções e procedimentos - LEGv8 - Paralelismo e sincronização - Array vs Pointers - Falácias

1
Q

O que é um conjunto de instruções?

A

Vocabulário de comandos entendido por uma determinada arquitetura.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Quais são os princípios de design de hardware?

A
  • Simplicidade favorece regularidade
  • Menor é mais rápido
  • Um bom design exige bons compromissos.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Qual é a unidade natural de acesso em um computador geralmente representada como um grupo de 64 bits?

A

Doubleword.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Qual é a convenção LEGv8 para escrever instruções?

A

Usar X seguida pelo número do registrador.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

O que é uma instrução de transferência de dados?

A

Comando que move dados entre a memória e os registradores.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Qual é a instrução LEGv8 para carregar dados da memória para um registrador?

A

LDUR (Load Unscaled Register).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Qual é a restrição de alinhamento para words e doublewords na memória?

A
  • Words devem começar em endereços múltiplos de 4
  • Doublewords devem começar em endereços múltiplos de 8.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

O que é o processo de spilling registers?

A

Colocar variáveis usadas com menos frequência na memória.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Como os números são representados no hardware do computador?

A

Como uma série de sinais eletrônicos altos e baixos, ou seja, números binários.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

O que é o bit menos significativo em uma doubleword LEGv8?

A

Bit mais à direita.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

O que é a representação two’s complement?

A

Forma de representar números negativos onde todos os negativos têm 1 no bit mais significativo.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

O que ocorre quando o bit retido mais à esquerda de um padrão de bit binário não corresponde ao bit de sinal?

A

Overflow.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Qual é a função de um signed load?

A

Copiar repetidamente o sinal para preencher o resto do registrador.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Qual é o atalho para negar números em two’s complement?

A

Inverter cada 0 para 1 e cada 1 para 0, depois somar um ao resultado.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

O que é o conceito de programa armazenado?

A

Ideia de que instruções e dados podem ser armazenados na memória como números.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Quais são as operações lógicas básicas em um computador?

A
  • AND
  • OR
  • NOT
  • EOR.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Quais são os tipos de instruções de tomada de decisão no LEGv8?

A
  • CBZ: compare and branch if zero
  • CBNZ: compare and branch if not zero
  • B: branch.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

O que são códigos de condição ou flags?

A

São quatro bits que registram o que ocorreu durante uma instrução que termina com S.
Inclui se o resultado foi zero (Z), se negativo (N), se houve overflow (O), se houve carryout (C).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Quais são os quatro bits extras que registram o que ocorreu durante uma instrução?

A

Negative (N), Zero (Z), Overflow (V), Carry (C)

Esses bits são conhecidos como códigos de condição ou flags.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

O que significa a flag Negative (N)?

A

O resultado que definiu o código de condição teve um 1 no bit mais significativo.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

O que significa a flag Zero (Z)?

A

O resultado que definiu o código de condição foi 0.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

O que significa a flag Overflow (V)?

A

O resultado que definiu o código de condição sofreu overflow.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

O que significa a flag Carry (C)?

A

O resultado que definiu o código de condição teve um carry out do bit mais significativo ou um empréstimo no bit mais significativo.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

Quais são algumas das instruções de comparação com sinal no LEGv8?

A
  • EQ: branch if equal
  • NE: branch if not equal
  • LT: branch if less than
  • LE: branch if less or equal
  • GT: branch if greater than
  • GE: branch if greater or equal to
  • MI: branch on minus; N=1
  • PL: branch on plus; N=0
  • VS: branch on overflow set; V=1
  • VC: branch on overflow clear; V=0
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Q

Quais são algumas das instruções de comparação sem sinal no LEGv8?

A
  • LO: < or lower
  • LS: ≤ or lower or same
  • HI: > or higher
  • HS: ≥ or higher or same
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
26
Q

Por que se adiciona um S ao final de uma instrução no LEGv8?

A

Adicionando um S ao final de instruções como ADDS, ADDIS, ANDS, ANDIS, SUBS e SUBIS, define-se as flags Z, N, O, C.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
27
Q

O que é uma branch address table?

A

Uma tabela que codifica alternativas de forma mais eficiente como uma tabela de endereços de sequências de instrução alternativas.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
28
Q

Qual é o propósito do registrador LR (X30) no LEGv8?

A

Armazenar o endereço de retorno para retornar ao ponto de origem após a execução de um procedimento.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
29
Q

Quais são os passos para executar um procedimento?

A
  • Colocar os parâmetros em um local acessível ao procedimento
  • Transferir o controle para o procedimento
  • Adquirir os recursos de armazenamento necessários
  • Executar a tarefa desejada
  • Colocar o valor do resultado em um local acessível
  • Retornar o controle ao ponto de origem
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
30
Q

O que representa o ponteiro da pilha (SP)?

A

O endereço alocado mais recentemente na pilha.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
31
Q

Como funciona o procedimento de push em uma pilha?

A

Adiciona um elemento à pilha, ajustando o ponteiro da pilha.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
32
Q

Como funciona o procedimento de pop em uma pilha?

A

Remove um elemento da pilha, ajustando o ponteiro da pilha.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
33
Q

Quais são os grupos de registradores no LEGv8?

A
  • X9 – X17: registradores temporários (não preservados)
  • X19 – X28: registradores salvos (devem ser preservados)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
34
Q

O que é um quadro de procedimento (procedure frame)?

A

Segmento da pilha que contém os registradores salvos e as variáveis locais de um procedimento.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
35
Q

Qual é a função do ponteiro de quadro (frame pointer)?

A

Aponta para a primeira doubleword do quadro de um procedimento.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
36
Q

Qual é o propósito do código ASCII?

A

Código Padrão Americano para Intercâmbio de Informações.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
37
Q

O que faz a instrução LDURB?

A

Carrega um byte da memória, colocando-o nos 8 bits mais à direita de um registrador.

38
Q

O que faz a instrução STURB?

A

Pega um byte dos 8 bits mais à direita de um registrador e grava na memória.

39
Q

Quais são as três opções para representar uma string?

A
  • Reservar a primeira posição para o comprimento
  • Usar uma variável acompanhante para o tamanho
  • Indicar o final da string com um caractere especial
40
Q

O que é a instrução MOVZ?

A

Transfere um valor de campo constante de 16 bits para um dos quadrantes mais à esquerda de um registrador de 64 bits, preenchendo os outros 48 bits com 0s.

41
Q

O que é a instrução MOVK?

A

Altera apenas 16 bits do registrador, mantendo os outros bits iguais.

42
Q

Qual é o formato de instrução usado para branches no LEGv8?

43
Q

O que é uma corrida de dados (data race)?

A

Dois acessos a memória formam uma corrida de dados se forem de diferentes threads e um deles realiza uma operação de escrita.

44
Q

Qual é a função de uma operação de troca atômica (atomic exchange)?

A

Troca um valor em um registrador para um valor na memória de forma atômica.

45
Q

O que é o contador de programa (PC)?

A

Registrador contendo o endereço da instrução do programa que está sendo executada.

46
Q

O que é uma operação de memória atômica?

A

Uma operação que requer uma leitura de memória e uma gravação em uma única instrução ininterrupta.

47
Q

Quais instruções compõem o par atômico no LEGv8?

A

load exclusive register (LDXR) e store exclusive register (STXR).

48
Q

O que acontece se o conteúdo do local de memória mudar antes do store exclusive?

A

O store exclusive falhará e não gravará o valor na memória.

49
Q

Quais registradores são especificados pelo STXR?

A
  • Um para o endereço
  • Um para indicar se a operação atômica falhou ou foi bem-sucedida
  • Um para manter o valor a ser armazenado na memória.
50
Q

Qual é a função do load exclusive no contexto de operações atômicas?

A

Retorna o valor inicial do local de memória especificado.

51
Q

O que é um arquivo object?

A

Uma combinação de instruções de linguagem de máquina, dados e informações necessárias para colocar as instruções corretamente na memória.

52
Q

Qual é a função principal de um assembler?

A

Transformar o programa em linguagem assembly em um object file.

53
Q

O que é uma tabela de símbolos?

A

Combina nomes de labels com os endereços das palavras de memória que as instruções ocupam.

54
Q

Quais passos são feitos pelo linker?

A
  • Coloca o código e os módulos de dados simbolicamente na memória
  • Determina o endereço de labels de dados e instruções
  • Corrige as referências internas e externas.
55
Q

O que são bibliotecas vinculadas dinamicamente (DLLs)?

A

Rotinas de bibliotecas vinculadas a um programa durante a execução, somente após serem chamadas.

56
Q

Qual é a desvantagem da interpretação em programas?

A

Menor desempenho.

57
Q

O que faz o compilador Just In Time (JIT)?

A

Compila segmentos de código interpretados no código nativo do computador em tempo de execução.

58
Q

Preencha a lacuna: Uma _______ é uma variação comum de instruções de linguagem assembly, muitas vezes tratada como se fosse uma instrução por si só.

A

pseudo-instrução

59
Q

Como um procedimento em C pode ser traduzido para assembly?

A

Seguindo passos como alocar registradores, fazer o código para o corpo do procedimento e salvar os registradores.

60
Q

Qual é a vantagem do mecanismo load/store exclusive?

A

Pode ser usado para construir outras primitivas de sincronização.

61
Q

Qual é o propósito do loader?

A

Colocar um object program na memória principal para que esteja pronto para executar.

62
Q

O que é um arquivo executável?

A

Programa funcional no formato de um object file que não contém referências não resolvidas.

63
Q

Qual é a função do Java Virtual Machine (JVM)?

A

Programa que interpreta bytecodes Java.

64
Q

Como um programa Java é preparado para execução?

A

Compilado em uma versão binária de bytecodes Java.

65
Q

O que deve ser minimizado entre o load exclusive e o store exclusive?

A

O número de instruções para minimizar a probabilidade de falha no store exclusive.

66
Q

Qual é a consequência de um store exclusive falhar?

A

O valor não será gravado na memória.

67
Q

O que significa ‘procedimento inlining’?

A

Copiar o código do corpo do procedimento onde a chamada aparece no código.

68
Q

Qual é a função do linker editor?

A

Pegar todos os programas em linguagem de máquina montados de forma independente e os unir.

69
Q

O que ocorre durante a primeira chamada de uma rotina da biblioteca em DLLs?

A

O programa chama o dynamic linker/loader para localizar e remapear a rotina desejada.

70
Q

Qual é a fórmula para calcular X10?

A

X10 = i * 8

71
Q

O que representa X11 no código?

A

Endereço de array[i]

72
Q

Como é incrementado o valor de i no loop?

73
Q

O que acontece se i for menor que size?

A

Vai para loop1

74
Q

Qual é a função clear2 e o que ela faz?

A

clear2 (long long int *array, size_t int size) zera todos os elementos do array

75
Q

Como o ponteiro p é utilizado na função clear2?

A

p é incrementado para zerar os elementos do array

76
Q

Qual é a diferença entre a versão em assembly usando índice e a versão usando ponteiro?

A

A versão em índice multiplica e adiciona dentro do loop, enquanto a versão de ponteiro incrementa o ponteiro diretamente

77
Q

Quais são as instruções do ISA do MIPS?

A

MIPS-32 e MIPS-64

78
Q

O que caracteriza um registrador de propósito geral (GPR)?

A

Pode ser usado para endereços ou dados com praticamente qualquer instrução

79
Q

Quais são algumas características comuns entre ARMv8 e MIPS?

A
  • Todas as instruções são de 32 bits
  • Ambos têm 32 registradores de propósito geral
  • A única maneira de acessar a memória é através de instruções de load e store
  • Ambos têm instruções de branch com CBZ e CBNZ
80
Q

Qual é a principal diferença entre ARMv8 e MIPS em relação a branches condicionais?

A

ARMv8 usa códigos de condição, enquanto MIPS depende de uma instrução de comparação

81
Q

O que o ARMv7 não possui que o ARMv8 tem?

A

Um registrador reservado para armazenar 0 (XZR)

82
Q

Qual é a implicação de não ter um registrador de contador de programa (PC) no ARMv8?

A

Evita branches inesperadas

83
Q

Qual é a característica única do conjunto de instruções ARMv8?

A

O segundo registrador de operações aritméticas pode ser deslocado antes da operação

84
Q

Qual é a diferença entre instruções de load e store no ARMv7 e ARMv8?

A

ARMv7 tem instruções load/store múltiplas, ARMv8 não

85
Q

Quais são as classes principais de operações de inteiros no x86?

A
  • Instruções de movimentação de dados
  • Instruções aritméticas e lógicas
  • Fluxo de controle
  • Instruções de string
86
Q

Como as instruções x86 diferem das instruções ARM?

A

Instruções aritméticas e lógicas do x86 podem ter um operando na memória

87
Q

Qual é uma falácia comum sobre instruções mais poderosas?

A

Instruções mais poderosas significam maior desempenho

88
Q

Qual é uma armadilha comum ao trabalhar com endereços de memória?

A

Esquecer que endereços de palavra sequencial em máquinas com endereçamento de bytes não diferem em um

89
Q

O que pode acontecer com ponteiros para variáveis automáticas?

A

Podem levar ao caos se usados fora do procedimento de definição