Lista Conceitos

Propaganda
LISTA DE IAC
Prof. Jorge Habib Hanna El Khouri
Aluno: ____________________________
1.
2.
3.
4.
5.
6.
Turma: 2º
UNIOESTE
Cite três razões para se utilizar a linguagem assembly.
Cite três razões para não se utilizar a linguagem assembly.
Quais são os quatro níveis de arquitetura. Descreva brevemente cada um deles.
O que significa dizer que uma arquitetura é de 𝑛 bits ?
A execução de uma instrução envolve a realização de uma sequência de passos, que
podemos chamar de passos de execução. Cite e descreva estes passos.
Em relação ao processador 𝐼𝑛𝑡𝑒𝑙 8086, pede-se:
a. Apresentar um diagrama com seus principais elementos.
b. Quantas unidades/seções compõe este processador.
c. Explique a função de cada uma destas unidades.
d. Como se caracterizava em termos de tamanho os barramentos.
e. Qual a capacidade de endereçamento? Explique.
f. Cite todos os registradores juntamente com a utilização mais comum para cada um
deles.
g. Que segmentos são normalmente ocupados por um programa na memória?
h. Como era composto o endereço lógico?
i. Como um endereço lógico é convertido para endereço físico?
j. Qual a expressão que denota a forma correta de se escrever um offset? Como são
chamados os modos de endereçamento?
7.
Em relação ao processador Intel 80286, pede-se:
a. Apresentar um diagrama com seus principais elementos.
b. Quais as principais inovações desta arquitetura?
c. Quantas unidades/seções compõe este processador.
d. Explique a função de cada uma destas unidades.
e. Como se caracterizava em termos de tamanho os barramentos.
f. Quais os modos de operação?
g. Qual a capacidade de endereçamento? Explique.
h. Quais as principais diferenças em relação ao 8086?
8.
Em relação ao processador Intel 80386, pede-se:
a. Apresentar um diagrama com seus principais elementos.
b. Quais as principais inovações desta arquitetura?
c. Quantas unidades/seções compõe este processador.
d. Explique a função de cada uma destas unidades.
e. Como se caracterizava em termos de tamanho os barramentos internos e externos.
f. Qual a capacidade de endereçamento? Explique.
g. Cite todos os registradores juntamente com a utilização mais comum para cada um deles.
h. Quais os modos de operação?
i. Como era composto o endereço lógico?
j. Como um endereço lógico é convertido para endereço físico?
i. Esboce o diagrama de tradução do endereço lógico para endereço linear feito pela
unidade de segmentação.
ii. Esboce o diagrama de tradução do endereço linear para endereço físico feito pela
unidade de paginação.
k. Qual a expressão que denota a forma correta de se escrever um offset? Como são chamados
os modos de endereçamento?
l. Quais as principais diferenças em relação ao 80286?
9.
Em relação ao processador Intel 80486, pede-se:
a. Apresentar um diagrama com seus principais elementos.
b. Quais as principais inovações desta arquitetura?
10.
11.
12.
13.
Cite as principais características da família Pentium.
Quais os significados dos bits do registrador EFlags?
Explique o processo de representação em Complemento de 2 (C-2);
Codifique em C-2 com 32 bits os seguintes números:
a. +2300
b. -1
c. -500
d. +3600
14.
Elaborar uma função em C que permite inspecionar o conteúdo da memória, apresentando
os dados na tela no seguinte formato:
Cabeçalho da função
void displaymem (unsigned char *p,
unsigned char *q,
int width);
𝑝 e 𝑞 denotam os endereços iniciais e finais da área
de memória que se deseja apresentar seus conteúdos
na tela.
O parâmetro 𝑤 indica a quantidade de dados por
linha.
Os valores dos 𝑏𝑦𝑡𝑒𝑠 são apresentados em
hexadecimal.
Exemplo de layout de saída
00401290:
0040129A:
004012A4:
004012AE:
004012B8:
004012C2:
004012CC:
55
00
8b
fc
00
e5
e5
89
00
45
8d
eb
b8
b8
e5
00
fc
55
e9
ff
fe
83
c7
3b
f8
8b
ff
ff
ec
45
45
01
45
ff
ff
08
fc
08
02
f8
ff
ff
c7
ff
7d
8d
c9
5d
5d
45
ff
0f
45
c3
c3
c3
f8
ff
8b
fc
55
55
55
00
ff
45
ff
89
89
89
A função 𝑑𝑖𝑠𝑝𝑙𝑎𝑦𝑚𝑒𝑚 permite inspecionar os dados que estão na área de código ou de
dados, ou mesmo em outros segmentos. Observe o exemplo abaixo, onde esta função é utilizada:
Trecho de código faltando o corpo da função
Saída obtida com as duas chamadas da função
𝑑𝑖𝑠𝑝𝑙𝑎𝑦𝑚𝑒𝑚
𝑑𝑖𝑠𝑝𝑙𝑎𝑦𝑚𝑒𝑚
#include <stdio.h>
#include <stdlib.h>
00402000:
0040200A:
6f 6c 61 20 6d 75 6e 64 6f 00
00 00 00 00 00 00 ff ff ff ff
int f1 () { return -1; };
int f2 () { return -2; };
004012C0:
004012CA:
004012D4:
55 89 e5 b8 ff ff ff ff 5d c3
55 89 e5 b8 fe ff ff ff 5d c3
55 89 e5 83 ec 18 8b 45 08 89
void displaymem (unsigned char *p,
unsigned char *q,
int width);
char s[] = "ola mundo";
int main(int argc, char *argv[])
{
displaymem (s, s+20, 10);
displaymem ((unsigned char *)&f1,
(unsigned char *)&f1+30,
10);
system("PAUSE");
return 0;
}
O quadro a direita apresenta a saída obtida com a chamada 𝑑𝑖𝑠𝑝𝑙𝑎𝑦𝑚𝑒𝑚 (𝑠, 𝑠 + 20, 10); onde
os 20 primeiros bytes a partir do endereço dado por 𝑠 são mostrados na tela em linhas com 10
bytes cada.
Em
seguida
é
apresenta
a
saída
obtida
com
a
segunda
chamada
𝑑𝑖𝑠𝑝𝑙𝑎𝑦𝑚𝑒𝑚 ((𝑢𝑛𝑠𝑖𝑔𝑛𝑒𝑑 𝑐ℎ𝑎𝑟 ∗)&𝑓1, (𝑢𝑛𝑠𝑖𝑔𝑛𝑒𝑑 𝑐ℎ𝑎𝑟 ∗)&𝑓1 + 30, 10); onde os 30
primeiros bytes a partir do endereço onde inicia a função 𝑓1 são mostrados na tela em linhas
com 10 bytes cada.
Assim, pede-se:
a. Codificar a função pedida 𝑑𝑖𝑠𝑝𝑙𝑎𝑦𝑚𝑒𝑚;
b. Compilar e executar o programa exemplo.
i) Explicar o significado dos bytes apresentados pela primeira chamada.
c. Acrescentar a inspeção da área de memória ocupada pela função 𝑓2 (primeiros 20
bytes);
d. Codificar a função 𝑙𝑒𝑛𝑔𝑡ℎ que retorna o comprimento de uma 𝑠𝑡𝑟𝑖𝑛𝑔;
i) 𝑖𝑛𝑡 𝑙𝑒𝑛𝑔𝑡ℎ (𝑐ℎ𝑎𝑟 ∗ 𝑠);
e. Considerando que você tenha implementado as funções na sequência 𝑓1, 𝑓2 e
𝑙𝑒𝑛𝑔𝑡ℎ (caso não tenha, altere para esta sequência), pede-se:
i) Acrescentar a chamada que inspeciona a área de memória ocupada pela
função 𝑙𝑒𝑛𝑔𝑡ℎ (primeiros 30 bytes);
ii) acrescentar a chamada que inspeciona a área exata de memória ocupada pela
função 𝑓1;
iii) idem para a função 𝑓2;
iv) Qual a quantidade de bytes ocupada pelas funções 𝑓1 e 𝑓2;
v) Qual a diferença entre os bytes de 𝑓1 e os bytes de 𝑓2? Por que ?
vi) Inverta a ordem de implementação para: 𝑓1, 𝑙𝑒𝑛𝑔𝑡ℎ e 𝑓2; e acrescentar a
inspeção da área exata de memória ocupada pela função 𝑙𝑒𝑛𝑔𝑡ℎ;
vii) Existe alguma assinatura (sequência de bytes) que indica o início de uma
função ? Qual ?
viii) Existe alguma assinatura (sequência de bytes) que indica o fim de uma
função ? Qual ?
Download