Preguntas teoricas

lucasizaguirre
12 de Agosto del 2004
- Motivos por los cuales se debe reservar espacio en la pila (subrutinas, interrupciones,etc)
- En que caso se define mas de un segmento de datos.

Zeros Metalium
12 de Agosto del 2004
Bueno, no tengo una formacion teorica pero te puedo contestar en que casos lo hago yo.
Se reserva espacio en la pila (cambiando el stack pointer) cuando tenemos que usar variables locales o pasar parametros, a esto se le llama marco de pila y ademas contiene el contador de programas acutal y el segmento de codigo acutal (en arquitectura X86, en otros procesadores capas solo el contador de programa) Lo unico que difiere un marco generado con CALL a uno generado por una interrupcion es en que la interrupcion pone tambien el registro de vandferas (FLAGS) en la pila, tambien el modo `protegido tenes las TRAP y las Call Cates que son parecidas pero ademas salvan el estado de todos los reistros del procesador y otras cosas mas.
Bueno, en sistensis reservas espacio en pila cuando tenes parametros que pasar y/o variables locales de laf uncion, interrupcion o lo que sea.
Lo del segmento de datos me confirma que esto hace referencia a la pesima arquitectura X86 y esta es muy dependiente del contexto en elq ue estemos ablando, sistemas operatibos, liberias, aplicaciones... en modo real el X86 no puede acceder a datos de mas de 64K asi que fragmenta la memoria en segmentos de 64K o un submultiplo de este (bueno esto lo hcae el compilador y/o el OS) y si tiene que transferir datos de un segmento a otro usa dos registros indices (SI y DI) y dos registros de segmeto (ES y DS)
En modo proteguido el merenge es mas omlejo, tenes descriptores de segmentos y selectores que apuntan a estos asi podes declarar un numero vastante grande de segmentos intercambiando el descriptor local o agregando entradas a este, pero no me enrrollo mjas porque no se si es lo que precisas, lo de la pila creo que no hay dudas, pero seria mejor que seas mas explcito con la ultima pregunta.

Saludos.