¿Cuántos bytes ocupa la traducción a lenguaje máquina de la línea 3?
-
En la tercera columna de la línea con el número 5 aparece el número
0x61FCFFFF
. ¿Cómo se ha obtenido este número?
-
En la línea 6 se utiliza la orden .space
seguida de un
número. ¿Qué significa este número? (puedes probar a modificarlo y
ver qué efecto tiene en el listado que muestra el compilador).
A la vista del resultado de la traducción de la línea 3, ¿cuál es el
código ASCII en hexadecimal que representa el símbolo
“=
”?
¿Cuál es la codificación en hexadecimal de la instrucción push
%eax
?
-
La instrucción push
seguida de un registro
se codifica con 8 bits. El procesador dispone de ocho registros con
nombres %eax
, %ebx
, %ecx
,
%edx
, %esi
, %edi
, %ebp
y
%esp
. Deducir con esta información qué bits del byte que
codifica la instrucción son los que más probablemente se utilicen
para codificar el registro (se permite modificar el código).
-
¿Por qué crees que la codificación de las instrucciones en las líneas
20 y 21, a pesar de ser ambas del tipo push
tiene
diferente tamaño?
-
La instrucción add %eax, result
se codifica con 6
bytes. El procesador dispone de ocho registros con nombres
%eax
, %ebx
, %ecx
,
%edx
, %esi
, %edi
,
%ebp
y %esp
. Deducir con esta información
qué bits de los seis bytes que codifican la instrucción son los que
más probablemente se utilicen para codificar el registro (se permite
modificar el código).
La instrucción add $8, %esp
se codifica con tres
bytes. ¿Cuántos bits se utilizan para codificar la constante que
aparece como primer operando de la suma?
-
Explica qué sucede con la codificación de la instrucción anterior si la
constante del primer operando es mayor que 127.
-
Para definir un string, además de la directiva .asciz
que se utiliza en la línea 3, el ensamblador también permite la
directiva .ascii
. ¿En qué se diferencian?
-
En la línea 6 se utiliza la directiva .space
. Esta
directiva permite que en lugar de ir seguida de un número, vaya
seguida de dos números separados por comas. ¿Cuál es el efecto del
segundo número?
¿Cuál es la longitud en bytes de la codificación de los datos del programa?
¿Cuál es la longitud en bytes de la codificación del código del programa?
-
En las líneas finales del listado se incluye una sección con título
DEFINED SYMBOLS
. Esta sección consta
de cinco líneas que comienzan por el nombre del fichero seguido de
dos puntos, seguido de un número, luego aparece la palabra
.data
o .text
, a continuación un número, y
termina con un nombre. ¿Qué crees que significa el número que aparece
en penúltimo lugar?
-
La representación en lenguaje máquina de la instrucción mov
valor1, %eax
debe contener en su interior un conjunto de bits
que codifique el símbolo valor1
. ¿Qué bits de su
codificación se utilizan para esto? (se permite modificar el código y
se sugiere consultar la información de la sección DEFINED
SYMBOLS
al final del listado).
-
La última sección del listado lleva por título UNDEFINED
SYMBOLS
. ¿Por qué crees que esta sección incluye el símbolo
printf
?