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?

Solució 19.1

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.
  1. Quins passos cal fer per executar el programa en C en l’ordinador x86-64, usant solament els elements disponibles?
  2. Quins passos caldria fer si es vol tornar a executar el mateix programa?

Solució 19.2

10.2 Codificació de nombres naturals i enters

Vegeu Secció 1.4, Secció 1.4.5 i Secció 1.5.

Problema 10.3  

  1. 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
  1. 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

Solució 19.3

Problema 10.4 Quin és l’enter més petit (el més negatiu) representable en complement a 2 amb 13 bits?

  1. Escriviu el patró de 13 bits i expresseu-lo en hexadecimal (completeu-lo amb zeros a l’esquerra fins a 16 bits).
  2. Expresseu-lo en decimal.

Solució 19.4

Problema 10.5 Quin és l’enter positiu més gran representable en complement a 2 amb 13 bits?

  1. Escriviu el patró de 13 bits i expresseu-lo en hexadecimal (completeu-lo amb zeros a l’esquerra fins a 16 bits).
  2. Expresseu-lo en decimal.

Solució 19.5

Problema 10.6  

  1. 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\)
  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

Solució 19.6

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

Solució 19.7

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:

  1. 0000 1111
  2. 1000 0000
  3. 1111 1111
  4. 1111 1111 1111 0000

Solució 19.8

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.

  1. 0011 0101
  2. 1100 1101

Solució 19.9

Problema 10.10 Convertiu els nombres enters següents, representats en complement a 2 de 16 bits, a la representació decimal amb signe:

  1. 0x0123
  2. 0xFE23

Solució 19.10

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:

  1. +123
  2. +255
  3. −127
  4. +170
  5. +128
  6. −230
  7. −18
  8. −128
  9. −1

Solució 19.11

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.

  1. \(45 + 30\)
  2. \(100 + 80\)
  3. \((-45) + (-30)\)
  4. \((-100) + (-80)\)
  5. \(45 + (-30)\)

Solució 19.12

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.

  1. \(45 - 30\)
  2. \(30 - 45\)
  3. \((-100) - 45\)

Solució 19.13

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.

  1. \(6 \times 5\)
  2. \((-6) \times 5\)
  3. \((-6) \times (-5)\)
  4. \(20 \times 10\)

Solució 19.14

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.

  1. \(30 \div 5\)
  2. \((-30) \div 5\)
  3. \((-30) \div (-5)\)
  4. \((-7) \div 2\)
  5. \((-128) \div (-1)\)

Solució 19.15