Está en la página 1de 9

Nombre de la asignatura: Lenguajes de Interfaz

Nombre del alumno:


_____________________________________________________________________
Grupo: ISC601 Evaluacin: 3.
Cuestionario: 3-2

Calificacin del examen


____________
Escala
__________
Calificacin Total
_____________
_________________
Vo. Bo.
Firma de estudiante
Divisin de Ingeniera en Sistemas Computacionales

Instrucciones: Conteste correctamente cada una de las siguientes preguntas, cualquier


ambigedad anulara la respuesta.

Pasando parmetros en la pila


1) Cuando se realiza el paso de parmetros en la pila, los parmetros no son sacados de la pila
por el subprograma, en lugar de ello son accedidos desde la pila misma. Explique las dos
razones por las cuales se realiza lo anterior?

2) Dibuje el esquema de la informacin en la pila para un subprograma al que se le pasa un solo


parmetro en la pila

3) Dibuje el esquema de la informacin en la pila para un subprograma al que adems de pasarle


un parmetro en la pila, se usa esta (la pila) para almacenar algn dato.

4) Cul es la razn de la existencia del registro EBP?

5) En al siguiente rutina, especifique la accin de cada una de las instrucciones. Dibuje tambin,
la estructura de la pila inmediatamente tambin de la ejecucin de la lnea 3 del cdigo.
6) Indique tambin el tipo de convencin de llamado de C.

7) Explique con que otra instruccin podra realizar la accin de la lnea 3 del cdigo anterior
8) Explique la razn del uso de la instruccin ADD sobre la otra instruccin propuesta

Evalu (13) Roberto Gonzlez Galn


Variables locales en la pila

9) Explique dos razones por las cuales es conveniente el uso de la pila para guardar variables
locales
.
Programas Multinmdulo
10) Qu es un programa multi-inmdulo?
11) Explique la razn de la directiva extern
12) Explique la razn de la directiva global
13) Dibuje el archivo esqueleto que se puede usar como punto de partida para
escribir programas en ensamblador
Interfazando Ensamblador con lenguaje C
14) De cuantas formas podemos usar rutinas en ensamblador en lenguaje C
15) Diga ,dos razones por las cuales se sigue usando el lenguaje ensamblador
combinado con lenguajes de programacin de alto nivel
16) Diga cuales son los registros que en una subrutina en C conservan sus valores
17) Diga cul es la estrategia seguida en programacin hbrida para asegurar que los
registros anteriores conserven sus valores.
18) Cul es la forma en que los compiladores indican el nombre de funciones o de variables
globales
19) Que es lo que indica la convencin en cuanto al orden del paso de parmetros en el
llamado de una funcin en C
20) Considere el caso de pasar la direccin de una variable (la llamaremos x) a
una funcin (que llamaremos foo). Si x est en EBP 8 en la pila, Indique porque
uno no puede usar:
mov eax, ebp 8
para calcular la direccin de la variable local x
21) Cul es la alternativa a seguir para resolver el problema anterior
22) Explique la operacin de la instruccin que Ud. Contesto
23) Explique el significado de un parmetro void como valor de retorno en una
funcin
24) Explique cmo se almacenan valores de retorno de tipo entero de 32 bits
25) Explique cmo se almacenan valores de retorno de tipo entero de 64 bits
26) Indique como se declara la convencin de llamado de una funcin en C
27) Explique la diferencia entre los valores: stdcall y cdecl
28) Diga dos caractersticas que un programa reentrante debe poseer
29) Diga que es un programa recursivo
30) Diga cul es el problema de una mala condicin de terminacin de un
programa recursivo
31) Diga que es un arreglo
32) Escriba como definir un arreglo en los segmentos data y en bss
33) Diga cmo acceder a los elementos de un arreglo
Cuestionario3-2Respuestas
Pasando parmetros en la pila
1) Cuando se realiza el paso de parmetros en la pila, los parmetros no son sacados de la pila
por el subprograma, en lugar de ello son accedidos desde la pila misma. Explique las dos
razones por las cuales se realiza lo anterior?
RESPUESTA
Ya que ellos se han empujado a la pila antes de la instruccin CALL, la direccin de retorno
tendra que haberse sacado primero (y luego metido otra vez).
A menudo los parmetros tendran que usarse en varios lugares en el subprograma.
Normalmente, ellos no se pueden dejar en un registro durante todo el subprograma y tendra
que almacenarse en memoria. Dejndolos en la pila tenemos una copia del dato en memoria
que se puede acceder en cualquier parte del subprograma.
|
2) Dibuje el esquema de la informacin en la pila para un subprograma al que se le pasa un solo
parmetro en la pila
1) Se asigna el parmetro en la pila antes
del llamado del procedimiento (CALL)
2) Despus se realiza el llamado CALL. Por
lo que la pila (ESP) apunta a la direccin
de retorno; el parmetro quedo
sepultado en ESP+4.

3) Dibuje el esquema de la informacin en la pila para un subprograma al que adems de pasarle


un parmetro en la pila, se usa esta (la pila) para almacenar algn dato.

1) Se asigna el parmetro en la pila antes


del llamado del procedimiento (CALL)
2) Se realiza la instruccin CALL. ESP
contiene una direccin de retorno
3) Se almacena algn dato (desde el
subprograma) en la pila. ESP= dato;
ESP+4 = Direccin de retorno.

4) Cul es la razn de la existencia del registro EBP?


Respuesta: El nico propsito de este registro es referenciar datos en la pila

Evalu (13) Roberto Gonzlez Galn


5) En la siguiente rutina, especifique la accin de cada una de las instrucciones. Dibuje tambin,
la estructura de la pila inmediatamente despues de la ejecucin de la lnea 3 del cdigo.

Repuesta:

La estructura de la pila es:

6) En la siguiente rutina de ensamblador, especifique la accin de cada una de las instrucciones.


Indique tambin el tipo de convencin de llamado de C.

Respuesta:

La convencin de llamado es la que indica que luego de que el subprograma


culmina, los parmetros que se empujan en la pila se deben quitar. La convencin
de llamado de C especifica que el cdigo llamador debe hacer esto.

7) Explique con que otra instruccin podra realizar la accin de la lnea 3 del cdigo anterior
Respuesta: Una instruccin POP se podra usar para hacer esto pero requerira que el
resultado intil se almacene en un registro.

8) Explique la razn del uso de la instruccin ADD sobre la otra instruccin propuesta
Respuesta: El compilador usara POP en lugar de ADD porque ADD requiere ms
bytes para la instruccin. Sin embargo, POP tambin altera el valor de ECX.
Variables locales en la pila

9) Explique dos razones por las cuales es conveniente el uso de la pila para guardar variables
locales
Respuesta: Usar la pila para las variables es importante si uno desea que el
programa sea reentrante. En otras palabras, los programas reentrantes pueden ser
invocados recursivamente Los datos no almacenados en la pila estn usando la
memoria desde el comienzo hasta el final del programa (C llama este tipo de
variable global o static). Los datos almacenados en la pila solo usan la memoria
cuando el subprograma que los define est activo.
Programas Multinmdulo
10) Qu es un programa multi-inmdulo?
Respuesta: Un programa multi-inmdulo es uno que est compuesto de ms de un
archivo objeto.
11) Explique la razn de la directiva extern
Respuesta: La directiva le dice al ensamblador que trate esas etiquetas (las
marcadas con esta directiva) como externas al mdulo.
12) Explique la razn de la directiva global
Respuesta: En ensamblador, no se puede acceder externamente a las etiquetas por
omisin. Si una etiqueta puede ser accedida desde otros mdulos diferentes al cual
se defini, debe declararse global en su mdulo
13) Dibuje el archivo esqueleto que se puede usar como punto de partida para
escribir programas en ensamblador
Respuesta:

Evalu (13) Roberto Gonzlez Galn


Interfazando Ensamblador con lenguaje C

14) De cuantas formas podemos usar rutinas en ensamblador en lenguaje C


Repuesta:
Se puede hacer de dos maneras: llamando rutinas de ensamblador desde C o
ensamblado en lnea.
15) Diga ,dos razones por las cuales se sigue usando el lenguaje ensamblador
combinado con lenguajes de programacin de alto nivel
Respuesta:
Las rutinas de ensamblador comnmente se usan con C por las siguientes razones:
- Se necesita acceso directo a caractersticas del hardware del computador que es
imposible o difcil acceder desde C.
- La rutina debe ser lo ms rpida posible y el programador puede optimizar a mano
el cdigo mejor que el compilador
16) Diga cuales son los registros que en una subrutina en C conservan sus valores
Respuesta:
Los registros: EBX, ESI, EDI, EBP, CS, DS, SS, ES
17) Diga cul es la estrategia seguida en programacin hbrida para asegurar que los
registros anteriores conserven sus valores
Repuesta:
Normalmente la pila se usa para guardar los valores originales de estos registros.
18) Cul es la forma en que los compiladores indican el nombre de funciones o de variables
globales
Repuesta:
La mayora de compiladores anteponen un guin bajo ( _ ) al inicio de los nombres
de funciones y variables globales o static. Por ejemplo una funcin llamada f se le
asignar la etiqueta f. As, si esta es una rutina en ensamblador se debe llamar _f
no f.
19) Que es lo que indica la convencin en cuanto al orden del paso de parmetros en el
llamado de una funcin en C
Respuesta: Bajo la convencin de llamado de C, los argumentos de una funcin se
empujan en la pila en el orden inverso que aparecen en el llamado a la funcin.
20) Considere el caso de pasar la direccin de una variable (la llamaremos x) a
una funcin (que llamaremos foo). Si x est en EBP 8 en la pila, Indique porque
uno no puede usar:
mov eax, ebp 8
para calcular la direccin de la variable local x
Respuesta:
El valor que MOV almacena en EAX debe ser calculado por el ensamblador (esto es,
debe ser una constante)
21) Cul es la alternativa a seguir para resolver el problema anterior
Respuesta:
Hay una instruccin que hace el clculo deseado. Es llamada LEA (Load Efective
Adress)
22) Explique la operacin de la instruccin que Ud. Contesto
Repuesta.
La instruccin
lea eax, [ebp - 8]
calculara la direccin de x y la almacena en EAX. parece como si esta instruccin
estuviera leyendo el dato en [EBP8]; sin embargo esto no es verdad. La
instruccin LEA nunca lee la memoria! Solo calcula la direccin que sera leda por
otra instruccin y almacena esta direccin en el primer operando de registro.
23) Explique el significado de un parmetro void como valor de retorno en una
funcin
Respuesta:
Un parmetro de retorno void indica que la funcin NO regresa ningn valor
24) Explique cmo se almacenan valores de retorno de tipo entero de 32 bits
Respuesta:
Todos los tipos enteros (char, int, enum, etc.) se retornan en el registro EAX. Si son
ms pequeos que 32 bits, ellos son extendidos a 32 bits cuando se almacenan en
EAX
25) Explique cmo se almacenan valores de retorno de tipo entero de 64 bits
Respuesta: Los valores de 64 bits se retornan en el par de registros EDX:EAX.
26) Indique como se declara la convencin de llamado de una funcin en C
Respuesta:
La convencin de una funcin se declara explcitamente usando la extensin
-attribute-.
Ejemplo:
void f ( int ) attribute ((cdecl ));
27) Explique la diferencia entre los valores: stdcall y cdecl
Respuesta:
Evalu (13) Roberto Gonzlez Galn
La diferencia entre stdcall y cdecl es que stdcall requiere que la subrutina quite
los parmetros de la pila. As, la convencin stdcall slo se puede usar con
funciones que tomen un nmero fijo de parmetros (ejemplo. unas que no sean
como printf y scanf).
28) Diga dos caractersticas que un programa reentrante debe poseer
29) Diga que es un programa recursivo
Respuesta:
Estos tipos de subprogramas se invocan a s mismos
30) Diga cul es el problema de una mala condicin de terminacin de un
programa recursivo
Respuesta: Los programas recursivos deben tener una condicin de terminacin.
Cuando esta condicin es verdadera, no se necesita hacer ms llamadas. Si la
rutina recursiva no tiene una condicin de terminacin o la condicin nunca se
vuelve verdadera, la recursin nunca termina (muy parecido a un bucle infinito).
31) Diga que es un arreglo
Respuesta: Un arreglo es un bloque contiguo de una lista de datos en la memoria.
Cada elemento de la lista debe ser del mismo tipo y usar exactamente el mismo
nmero de bytes de memoria para almacenarlo.
32) Escriba como definir un arreglo en los segmentos data y en bss
Respuesta:

33) Diga cmo acceder a los elementos de un arreglo


Respuesta:
Para acceder a un elemento de un arreglo, se debe calcular su direccin.
Considere las definiciones de los siguientes arreglos:

Ejemplos de uso de estos arreglos


Evalu (13) Roberto Gonzlez Galn

También podría gustarte