Академический Документы
Профессиональный Документы
Культура Документы
Manualdelparticipante
Autor:I.S.C.AlejandroGaleanaContreras
Unidad4.Generacindecdigoobjeto.
Objetivoparticular.
Alfinalizarlossubtemaslosparticipantespodrn:
Utilizarunlenguajedebajonivelparatraducirelcdigoconstruidoalenguajemquinaparasu
ejecucin, estoconelfindefacilitarlaconstruccin deun compilador desdeun lenguaje
objetivoparaunamquinaobjetivo.
Objetivosespecficos.
Alfinalizarlossubtemaslosparticipantes:
Conocernelconceptodeunregistromedianteladefinicindelmismomedianteeldesarrollo
deactividadesdeaprendizajeenlasquesediscutirnloselementosesenciales,estoconelfin
defacilitarlacomprensindelostemasdelaunidad.
Conocern la relacin existente entre el cdigo intermedio y el lenguaje ensamblador
mediantetcnicaexpositivaenlasquesediscutirnloselementosesenciales,estoconelfin
defacilitarlacomprensindelpasedelcdigointermedioacdigoensamblador.
Conocernlarelacinexistenteentreelcdigointermedio,ellenguajeensambladorylaforma
en que influyen al general el cdigo objetivo para la mquina objetivo mediante tcnica
expositiva enlas que sediscutirnloselementosesenciales,estocon elfindefacilitarla
comprensindelpasedelcdigointermedioacdigoensamblador.
Comprendernlarelacinexistenteentreelcdigointermedio,ellenguajeensambladoryla
memoriamediantetcnicaexpositivaenlasquesediscutirnloselementosesenciales,esto
conelfindefacilitarlacomprensindelpasedelcdigointermedioacdigoensamblador.
125
LenguajesyAutmatasII
Manualdelparticipante
Autor:I.S.C.AlejandroGaleanaContreras
Introduccin.
Lafasefinalenelmodelodelcompiladoreselgeneradordecdigo.Aquelgeneradordecdigo
se encargadegenerar elprogramadestinoaejecutarpor elusuario. Enun esquemaverstilde
construccin de compiladores modernos recibe como entrada la representacin intermedia que
produceelfrontenddelcompilador,juntoconlainformacinrelevantedelatabladesmbolos,y
producecomosalidaunprogramadedestinoequivalenteenformasemntica,comoseobservaenla
siguientefigura:
Compilador
programa
destino
Esquemasimple
Cdigo
fuente
Backend
Front
end
cdigo
cdigo
Optimizador
intermedio decdigo intermedio
Generador
decdigo
programa
destino
Esquemaverstil
Enunesquemasimple,elcdigofuenteintroducidocomoentradadelcompiladoresproducido
porsteenelprogramadestinoenformadeejecutable.
Enunesquemaverstil,elgeneradordecdigotomaelcdigointermediooRI(representacin
intermedia)ygeneraelcdigo(yaoptimizado)paralamquinaobjetivo(puedellegarahaberotra
optimizacinaejecutarsedespusdelafasedelgeneradordecdigo,peroesopcional).
Enamboscasoselprogramadestinodebepreservarelsignificadosemnticodelprogramafuente
yserdecalidad;esdecir,debe hacerun usoefectivodelos recursosdisponibles delamquina
destino.
Enlasfuentesbibliogrficasporlogeneralseejemplificalafasedelcdigodestinousandocdigo
ensambladorparafacilitarlaexplicacindelafase.Caberecordarquesepodra implementarun
compiladordedichaforma,creandounarchivodeprocesamientoporlotesqueejecuteunprograma
ensambladorqueleseapasadoelarchivoconelcdigodestinoyquegenereelejecutable,perosise
126
LenguajesyAutmatasII
Manualdelparticipante
Autor:I.S.C.AlejandroGaleanaContreras
realizadedichaformasetendraqueincluiradicionalmentealcompiladorqueseestrealizando,un
compiladordellenguajeensamblador,loquenoresultamuyapropiadosiloquesebuscaesconstruir
uncompiladorfuncional,aunquefuncionasiloquesedeseaesimplementaruncompiladorparafines
didcticos.
4.1Registros.
KipR.Irvineindicaque:Losregistrossonubicacionesdealmacenamientodealtavelocidad,que
seencuentrandirectamentedentrodelaCPU,yestndiseadosparaunavelocidaddeaccesomucho
mayorqueladelamemoriaconvencional.97Sonimportantesdebidoaqueungeneradordecdigo
tiene tres tareas principales: seleccin de instrucciones, reparticin y asignacin de registros, y
ordenamientodeinstrucciones.Laseleccindeinstruccionesimplicalaseleccindeinstrucciones
apropiadas de la mquina destino para implementar las instrucciones de la representacin
intermedia. La reparticin yasignacin de registros implica decidir qu valoresmantenerenqu
registros. El ordenamiento de instrucciones implica decidir en qu orden se va a programar su
ejecucin.
DeacuerdoconAlfredV.Aho:Unproblemaclaveenlageneracindecdigoesdecidirqu
valoresguardarenquregistros.Losregistrossonlaunidadcomputacionalmsvelozenlamquina
destino pero, por logeneral,no se tienen suficientes como para contener todos los valores. Los
valoresquenoseguardanenregistrosdebenresidirenlamemoria.Lasinstruccionesqueinvolucran
operandosderegistrossoninvariablementemscortasyrpidasquelasqueinvolucranelusode
operandosenlamemoria,porloquelautilizacineficientedelosregistrosesmuyimportante.
Amenudo,elusodelosregistrossedivideendossubproblemas:
Reparticinderegistros,durantelacualseleccionamoselconjuntodevariablesqueresidirn
enlosregistros,encadapuntodelprograma.
Asignacinderegistros,durantelacualseeligeelregistroespecficoenelqueresidiruna
variable.
Esdifcilencontrarunaasignacinptimaderegistrosavariables,inclusoenlasmquinasconun
soloregistro.Ensentidomatemtico,elproblemaesNPcompleto.Elproblemasecomplicaanms
debidoaqueelhardwareyelsistemaoperativodelamquinadestinopuedenrequerirquesesigan
ciertasconvencionesdeusoderegistros.98
Elempleodelosregistrosdebedarsedeformamuycuidadosa,yaquelomsseguroesqueno
97 KipR.Irvine.LenguajeensambladorparacomputadorasbasadasenIntel.Quintaedicin.P34
98 AlfredV.Aho,et.al.Compiladores,principios,tcnicasyherramientas.Segundaedicin.P.510
127
LenguajesyAutmatasII
Manualdelparticipante
Autor:I.S.C.AlejandroGaleanaContreras
todosestnadisposicindelusuario,comoloindicaKennetC.Lauden:Alolargodelahistoriael
nmeroderegistrosdisponibleshabaestadoseveramentelimitado:porloregulara8o16registros,
incluyendolosregistrosdepropsitoespecialcomoelpc,spyfp.Estodificultabalabuenaasignacin
de registros debido a que la competencia por el espacio de registros entre las variables y los
elementostemporaleseraintensa.Estasituacinpersisteenalgunosprocesadores,particularmente
enlosmicroprocesadores.99Demodoquehayquetenermuchocuidadodeasignarapropiadamente
losregistrosparaobtenerunptimodesempeodelcompilador.
Actividad13.
Objetivo:
Losestudiantesconocernafondoelusoqueseledaalosregistrosalahoradegenerar
cdigoobjeto.
Apertura:
De forma individual, se debe de realizar una indagacin del uso de los registros en un
compilador.
Alplantearselapregunta,sedebenderealizaraportacionesacercadelaindagacinrealizada.
Desarrollo:
Retomarlosconceptosexplicadosporeldocenteparalaaportacindelasformasdeusode
losregistrosindagadasporlosestudiantes.
Cierre:
Analizarlasrespuestasdetodoslosestudiantesqueparticipenysealarsilarespuestadada
escorrectaono.
Resolverdudasquepudieransurgirarazdelapresenteactividad.
Exhortaralestudianteaqueindaguemsacercadelasformasenquesepuedenoptimizarel
usoderegistroseneldesarrollodelcdigofuenteporpartedeuncompilador.
4.2Lenguajeensamblador.
El generador de cdigo puede generar diferentes tipos de cdigos de salida para el archivo
generadoproductodelafase.Ejemplosdeellosson:
99 KennethC.Louden.Construccindecompiladores,principiosyprctica.P.469
128
LenguajesyAutmatasII
Manualdelparticipante
Autor:I.S.C.AlejandroGaleanaContreras
Cdigoenensamblador.
Cdigomquina.
Enelpresentetemaseabordarlacreacindeunarchivoencdigoenlenguajeensamblador.
Alfred V. Aho indica que: El generador de cdigo debe asignar el programa de representacin
intermediaaunasecuenciadecdigoquelamquinadedestinopuedaejecutar.Lacomplejidadde
realizarestaasignacinsedeterminamediantefactorescomo:
Elniveldelarepresentacinintermedia.
Lanaturalezadelaarquitecturadelconjuntodeinstrucciones.
Lacalidaddeseadadelcdigogenerado.
//R0=y
//R0=R0+z
//x=R0
(CargayenelregistroR0)
(sumazaR0)
(almacenaR0enx)
Amenudo,estaestrategiaproduceoperacionesdecargayalmacenamientoredundantes.Por
ejemplo,lasiguientesecuenciadeinstruccionesdetresdirecciones:
100AlfredV.Aho,et.al.Compiladores,principios,tcnicasyherramientas.Segundaedicin.P.508
129
LenguajesyAutmatasII
Manualdelparticipante
Autor:I.S.C.AlejandroGaleanaContreras
a=b+c
d=a+e
setraduciraenelsiguientecdigo:
LDR0,b
ADDR0,R0,c
STa,R0
LDR0,a
ADDR0,R0,e
STd,R0
//R0=b
//R0=R0+c
//a=R0
//R0=a
//R0=R0+e
//d=R0
Aqu,lacuartainstruccinesredundante,yaquecargaunvalorqueacabadealmacenarse,yde
igualformalatercera,sinoseutilizalaamsadelante.101
Actividad14.
Objetivo:
Losestudiantesconocernlaformaenqueserealizaelpasedelcdigointermedioallenguaje
ensamblador.
Apertura:
De forma individual, se debe de realizar una indagacin del uso de la memoria, de los
registrosylapilaenellenguajeensamblador.
Alplantearselapregunta,sedebenderealizaraportacionesacercadelaindagacinrealizada.
Desarrollo:
Retomarlosconceptosexplicadosporeldocenteparalaaportacindelasformasdeusodela
memoria,losregistrosylapilaindagadasporlosestudiantes.
Cierre:
Analizarlasrespuestasdetodoslosestudiantesqueparticipenysealarsilarespuestadada
escorrectaono.
Resolverdudasquepudieransurgirarazdelapresenteactividad.
101AlfredV.Aho,et.al.Compiladores,principios,tcnicasyherramientas.Segundaedicin.P.508
130
LenguajesyAutmatasII
Manualdelparticipante
Autor:I.S.C.AlejandroGaleanaContreras
Exhortaralestudianteaqueindaguemsacercadelasformasenquesepuedeoptimizarel
desarrollodelcdigofuenteenlenguajeensambladorporpartedeuncompilador.
4.3Lenguajemquina.
Ellenguajemquinaquepuedeserusadovaria,dependiendodelaarquitectura,comoloindica
AlfredV.Aho:Laarquitecturadelconjuntodeinstruccionesdelamquinadestinotieneunimpacto
considerableenladificultaddeconstruirunbuengeneradordecdigoqueproduzcacdigomquina
decalidad.LasarquitecturasmscomunesdelasmquinasdedestinosonRISC(reducedinstruction
setcomputer),CISC(complexinstructionsetcomputer)ybasadasenpilas.
Por lo general, una mquina RISC tiene muchos registros, instrucciones de tres direcciones,
modosdedireccionamientosimpleyunaarquitecturadelconjuntodeinstruccionesrelativamente
sencilla.Encontraste,unamquinaCISC,porlogeneral,tienemenosregistros,instruccionesdedos
direcciones,unavariedaddemodosdedireccionamiento,variasclasesderegistros,instruccionesde
longitudvariableeinstruccionesconefectosadicionales.
Enunamquinabasadaenpila,lasoperacionesserealizanmetiendooperandosenunapila,y
despusllevandoacabolasoperacionesconlosoperandosenlapartesuperiordelapila.Paralograr
unaltorendimiento,lapartesuperiordelapilasemantiene,porlogeneral,enlosregistros.Estas
mquinas desaparecieron casi por completo, ya que se crea que la organizacin de la pila era
demasiadolimitanteyrequerademasiadasoperacionesdeintercambioycopiado.102
Cadaunadelasarquitecturaspresentasusventajasydesventajas.Sepuedeprogramarparalas
tres,peroelcualelegirdependerdelaarquitecturaparalacualseesteelaborandoelcompilador.
DeacuerdoconAlfredV.Aho:Producirunprogramaenlenguajemquinaabsolutocomosalida
tiene la ventaja de que puede colocarse en una ubicacin fija en la memoria, y ejecutarse de
inmediato.Losprogramaspuedencompilarseyejecutarseconrapidez.103Ladesventajaradicaenla
complejidaddelaelaboracindelcdigomquina,algoqueelolosdesarrolladoresdelcompilador
debendetomarencuenta.Paraproducirdichocdigoserealizaalgosimilaraloqueocurreconel
cdigointermedio.Lamquinavirtualdebedegenerarunarchivo,elculvaarecibirlosfragmentos
decdigoenlenguajemquinaconformevayaleyendoelcdigointermedio,unavezquetermineel
vaciadocierraelarchivoyseobtendrelprograma.
102AlfredV.Aho,et.al.Compiladores,principios,tcnicasyherramientas.Segundaedicin.P.507
103AlfredV.Aho,et.al.Compiladores,principios,tcnicasyherramientas.Segundaedicin.P.508
131
LenguajesyAutmatasII
Manualdelparticipante
Autor:I.S.C.AlejandroGaleanaContreras
Actividad15.
Objetivo:
Losestudiantesconocernlaformaenqueserealizaelpasedelcdigointermedioallenguaje
mquina.
Apertura:
De forma individual, se debe de realizar una indagacin del uso de la memoria, de los
registrosylapilaenellenguajemquina.
Alplantearselapregunta,sedebenderealizaraportacionesacercadelaindagacinrealizada.
Desarrollo:
Retomarlosconceptosexplicadosporeldocenteparalaaportacindelasformasdeusodela
memoria,losregistrosylapilaindagadasporlosestudiantes.
Cierre:
Analizarlasrespuestasdetodoslosestudiantesqueparticipenysealarsilarespuestadada
escorrectaono.
Resolverdudasquepudieransurgirarazdelapresenteactividad.
Exhortaralestudianteaqueindaguemsacercadelasformasenquesepuedeoptimizarel
desarrollodelcdigofuenteenlenguajemquinaporpartedeuncompilador.
4.4Administracindememoria.
Paraexplicarcmosellevaacabolaadministracindelamemoria,convienerecordarquelas
computadorasactualessebasanenlaarquitecturapropuestaporVonNeumann.
DeacuerdoconRafaelBerlangaLlavori:LamquinadeVonNeumannconstadedosmdulos
esenciales:launidadcentraldeproceso(C.P.U.CentralProcessUnit)ylamemoriadeaccesoaleatorio
(R.A.M. Random Access Memory). La C.P.U. Se encarga de ejecutar instrucciones segn las
instruccionesdelaunidaddecontrol(U.C.).Porsuparte,laR.A.M.Seencargadealmacenartodaslas
instruccionesylosdatosqueconformaranunprogramaencdigomquina. 104Delocualsepuede
deducirquesinimportarquelenguajeseempleeparalageneracindecdigo(yaseaensambladoro
algnotro),alfinalterminarejecutndoseenlenguajemquinaelprograma.
Enlasiguienteimagen105seobservalaarquitecturadelamquinadeVonNeumann:
104RafaelBerlangaLlavori,et.al.IntroduccinalaprogramacinconPascal.P.19
105RafaelBerlangaLlavori,et.al.IntroduccinalaprogramacinconPascal.P.20
132
LenguajesyAutmatasII
Manualdelparticipante
Autor:I.S.C.AlejandroGaleanaContreras
Entrada/Salida
C.P.U.
R.I.
U.C.
U.A.L.
R.A.M.
#1
#2
#3
#4
#5
contenido
01011010
#1254
direccinde
memoria
R.A.M.:Memoriadeaccesoaleatorio
R.I.:RegistrosInternosdelaU.C.P.
A.L.U.:UnidadAritmticoLgica
C.P.U.:UnidadCentraldeProceso
SeobservaquelamquinasecomponedelaC.P.U.(laencargadadeejecutarlasoperaciones)yla
R.A.M.(queesdondeseguardanlasoperacionesaejecutar).EsenlaRAMyenlosregistrosendonde
sepuedeguardarinformacinparalaejecucindelprograma.
Todainstruccindelcdigosecargaenmemoriaypuedehacerusoderegistros,unavezqueello
ocurrasepuedemandarllamaralaC.P.U.paraquerealicelasoperaciones.Hayquerecordarquesin
importar si se est trabajando con cdigo de tres direcciones, o cdigo ensamblador o lenguaje
mquina,sedebercargarlainformacinalamemoriaparaposteriormenteejecutarla.
Actividad16.
Objetivo:
133
LenguajesyAutmatasII
Manualdelparticipante
Autor:I.S.C.AlejandroGaleanaContreras
Losestudiantesconocernlaformaenqueseadministralamemoriaenunacomputadora.
Apertura:
Deformaindividual,sedebederealizarunaindagacindelaformaenqueseadministrala
memoriaatravsdelcdigogeneradoproductodelafasedelageneracindecdigo.
Alplantearselapregunta,sedebenderealizaraportacionesacercadelaindagacinrealizada.
Desarrollo:
Retomarlosconceptosexplicadosporeldocenteparalaaportacindeideassobrecomose
debedeadministrarlamemoriaindagadasporlosestudiantes.
Cierre:
Analizarlasrespuestasdetodoslosestudiantesqueparticipenysealarsilarespuestadada
escorrectaono.
Resolverdudasquepudieransurgirarazdelapresenteactividad.
Exhortaralestudianteaqueindaguemsacercadelasformasenquesedebeadministrarla
memoriaporpartedelcompilador.
134