Tema 1: Introducció
10.1 El cicle de vida del programa: Generació vs. execució
Vegeu Secció 1.2.
Problema 10.1 Es vol executar un programa escrit en Python en un ordinador RISC-V, però només es disposa dels elements següents:
- Un compilador de C a llenguatge màquina x86-64, escrit en llenguatge màquina x86-64.
- Un traductor binari de llenguatge màquina x86-64 a llenguatge màquina RISC-V, escrit en llenguatge màquina RISC-V.
- Un intèrpret de Python, escrit en C.
Quins passos cal fer per executar el programa en Python en l’ordinador RISC-V, usant solament els elements disponibles?
Problema 10.2 Es vol executar un programa escrit en C en un ordinador x86-64, però només es disposa dels elements següents:
- Un intèrpret de Python, escrit en llenguatge màquina RISC-V.
- Un compilador de C a llenguatge màquina x86-64, escrit en Python.
- Un traductor de llenguatge màquina RISC-V a llenguatge màquina x86-64, escrit en llenguatge màquina x86-64.
- Quins passos cal fer per executar el programa en C en l’ordinador x86-64, usant solament els elements disponibles?
- Quins passos caldria fer si es vol tornar a executar el mateix programa?
10.2 Codificació de nombres naturals i enters
Vegeu Secció 1.4, Secció 1.4.5 i Secció 1.5.
Problema 10.3
- Interpreteu els patrons de bits següents com a naturals i calculeu-ne el valor decimal:
| Patró de bits | \(n\) | Valor decimal |
|---|---|---|
0001 1001 |
8 | |
1010 0110 |
8 | |
0000 0000 1010 1101 |
16 |
- Representeu els naturals següents en binari amb el nombre de bits indicat. Si el valor no és representable amb el nombre de bits indicat, indiqueu-ho amb NC (no codificable).
| Decimal | \(n\) | Binari |
|---|---|---|
| 25 | 8 | |
| 173 | 8 | |
| 256 | 8 | |
| 173 | 16 |
Problema 10.4 Quin és l’enter més petit (el més negatiu) representable en complement a 2 amb 13 bits?
- Escriviu el patró de 13 bits i expresseu-lo en hexadecimal (completeu-lo amb zeros a l’esquerra fins a 16 bits).
- Expresseu-lo en decimal.
Problema 10.5 Quin és l’enter positiu més gran representable en complement a 2 amb 13 bits?
- Escriviu el patró de 13 bits i expresseu-lo en hexadecimal (completeu-lo amb zeros a l’esquerra fins a 16 bits).
- Expresseu-lo en decimal.
Problema 10.6
- Completeu la taula de rang i representació del zero per als formats d’enters en \(n\) bits:
| Format | Rang | Representació del zero |
|---|---|---|
| Signe i magnitud | ||
| Complement a 1 | ||
| Complement a 2 | \([-2^{n-1},\ 2^{n-1}-1]\) | \(0\ldots00\) |
| Excés a \(2^{n-1}-1\) |
- Completeu la taula de codificació en 4 bits per a aquests enters de l’interval \([-8, 8]\). Per als valors no codificables amb 4 bits, poseu NC.
| Decimal | Ca2 | Ca1 | Excés a 7 | Signe i magnitud |
|---|---|---|---|---|
| 8 | ||||
| 7 | ||||
| 4 | ||||
| 1 | ||||
| 0 | ||||
| −1 | ||||
| −4 | ||||
| −7 | ||||
| −8 |
Problema 10.7 Convertiu els enters decimals següents als formats de representació binària per a 8 bits. Escriviu el resultat en hexadecimal:
| Decimal | Ca1 | Ca2 | Signe i magnitud | Excés a \(2^7-1\) |
|---|---|---|---|---|
| −78 | ||||
| 125 | ||||
| 0 | ||||
| −1 |
Problema 10.8 Donats els patrons de bits següents, calculeu-ne el valor decimal interpretant-los primer com a natural i després com a enter en Ca2:
0000 11111000 00001111 11111111 1111 1111 0000
Problema 10.9 Apliqueu l’extensió de signe als patrons de 8 bits següents per obtenir la representació equivalent en 16 bits. Expresseu el resultat en hexadecimal i comproveu que el valor decimal representat és el mateix.
0011 01011100 1101
Problema 10.10 Convertiu els nombres enters següents, representats en complement a 2 de 16 bits, a la representació decimal amb signe:
0x01230xFE23
Problema 10.11 Codifiqueu en complement a 2 els enters següents, usant el format més petit possible (8 o 16 bits), i expresseu el resultat en hexadecimal:
- +123
- +255
- −127
- +170
- +128
- −230
- −18
- −128
- −1
10.3 Operacions aritmètiques en complement a 2
Vegeu Secció 1.6.
Problema 10.12 Efectueu les sumes següents en complement a 2 amb \(n = 8\) bits. Per a cada resultat, indiqueu si hi ha desbordament i justifiqueu-ho.
- \(45 + 30\)
- \(100 + 80\)
- \((-45) + (-30)\)
- \((-100) + (-80)\)
- \(45 + (-30)\)
Problema 10.13 Efectueu les restes següents en complement a 2 amb \(n = 8\) bits, usant el mètode de negació i suma. Per a cada resultat, indiqueu si hi ha desbordament.
- \(45 - 30\)
- \(30 - 45\)
- \((-100) - 45\)
Problema 10.14 Efectueu les multiplicacions següents en complement a 2 amb \(n = 8\) bits, usant el mètode de magnituds i signe. Indiqueu si el resultat és representable en 8 bits o si hi ha desbordament.
- \(6 \times 5\)
- \((-6) \times 5\)
- \((-6) \times (-5)\)
- \(20 \times 10\)
Problema 10.15 Efectueu les divisions següents en complement a 2 amb \(n = 8\) bits, usant el mètode de magnituds i signe. Per a cada resultat, indiqueu el quocient i el residu en Ca2, o bé si hi ha desbordament.
- \(30 \div 5\)
- \((-30) \div 5\)
- \((-30) \div (-5)\)
- \((-7) \div 2\)
- \((-128) \div (-1)\)