Вы находитесь на странице: 1из 10

LenguajesyAutmatasII

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.

Si larepresentacin intermedia es de altonivel,el generador de cdigopuede traducircada


instruccindeestetipoenunasecuenciadeinstruccionesdemquina,usandoplantillasdecdigo.
100
Dichocdigogeneradopuedesernuevamenteoptimizado,aunqueelloesopcional.
Lamquinavirtualdebedeleerelcdigointermedio(quepuedesercdigodetresdirecciones,
cdigoP,cdigoMSILoalgnotrocdigointermediogeneradoporelprogramador)ygenerarcdigo
ensamblador,elloseconsigueconalgngradodefacilidad,dadoqueenelcdigointermediose
trabajancondireccionesdememoria.Siseestuviesetrabajandoconuncompiladorquenofuese
desarrolladodeunaformaverstil(quenohagausodecdigointermedionidemquinavirtualque
lolea),entoncessecomplicaraunpocoelpasedelmismoacdigoensamblador,aunqueexisten
lenguajesdeprogramacinenlosquesepermiteincrustarcdigoensambladorenlosprogramas
(comoelcasodellenguajeC)oexistencompiladoresquesondesarrolladosenteramenteenlenguaje
ensamblador, lo cual quita la complejidad del pase del cdigo y deja slo la del desarrollo del
compilador.Seacualquieradelosescenarios,esnecesariorevisarlaformaenquesetrabajaconel
lenguajeensamblador.AlfredV.Ahoindicaque:Porejemplo,todainstruccindetresdireccionesde
laformax=y+z,endondex,yyzseasignanenformaesttica,puedetraducirseenlasiguiente
secuenciadecdigo:
LDR0,y
ADDR0,R0,z
STx,R0

//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

Вам также может понравиться