100% de satisfacción garantizada Inmediatamente disponible después del pago Leer en línea o como PDF No estas atado a nada 4,6 TrustPilot
logo-home
Resumen

Samenvatting hoofdstuk 8: Compilatie

Puntuación
5.0
(1)
Vendido
-
Páginas
16
Subido en
27-07-2022
Escrito en
2019/2020

Dit is de samenvatting van het achtste hoofdstuk van het vak Interpretatie van Computerprogramma's I. In deze samenvatting werd zowel alle informatie uit de slides als bijkomende informatie uit eigen notities opgenomen. Aan het einde van de samenvatting werden ook de herhalingsvragen opgelost EINDRESULTAAT: 16/20

Mostrar más Leer menos
Institución
Grado

Vista previa del contenido

Hoofdstuk 8: Compilatie
1 Context in de cursus

Compilatiefase




Uitvoerings-
fase




• Een compiler voert in tegenstelling tot een interpreter geen programma uit
o Een compiler is een programma dat een programma in de ene programmeertaal
(Scheme) omzet naar een equivalent programma in een andere programmeertaal
(registermachinecode)
• Interpreter = tolk → vertaalt ad runtime de instructies om het programma uit te voeren
• Compiler = vertaler → vertaalt programma dat daarna aan interpreter kan gegeven worden
voor de uitvoering ervan.

2 Voorstelling gegenereerde code
(define (make-instruction-sequence needs modifies statements)
Needs = registers die zullen worden uitgelezen door de code
Modified = registers die zullen worden aangepast door de
gegenereerde code
(list needs modifies statements))
We stellen een instructiesequentie voor als een lijst van de needs,
modidies en de eigenlijke instructies

(define (empty-instruction-sequence)
(make-instruction-sequence '() '() '()))
Een lege instructiesequentie heeft geen needs, modifies en
instructies




1

,(define (registers-needed s)
(if (symbol? s) '() (car s)))

(define (registers-modified s)
(if (symbol? s) '() (cadr s)))

(define (statements s)
(if (symbol? s) (list s) (caddr s)))

(define (needs-register? seq reg)
(memq reg (registers-needed seq)))

(define (modifies-register? seq reg)
(memq reg (registers-modified seq)))



3 Gebruik van de stapel
(define (preserving regs seq1 seq2)
Neemt een lijst van registers en 2 instructiesequenties als invoer.
(if (null? regs)
(append-instruction-sequences seq1 seq2)
Als de lijst van te conserveren registers leeg is, gebruiken we
append-instruction-sequences met de 2 meegegeven
instructiesequenties.
(let ((first-reg (car regs)))
Anders houden we de eerste van de te bewaren registers vast in
first-reg
(if (and (needs-register? seq2 first-reg)
(modifies-register? seq1 first-reg))
Als de tweede instructiesequentie het register in zijn originele
staat nodig heeft maar de eerste instructiesequentie deze aanpast
moeten we de inhoud van dit register voor het uitvoern van de eerste
instructiesequentie op de stack zetten en daarna er weer afhalen
zodat de tweede instructiesequentie hem in zijn originele staat
terugvindt.
(preserving (cdr regs)
(make-instruction-sequence
(list-union (list first-reg)
(registers-needed seq1))
(list-difference (registers-modified seq1)
(list first-reg))
(append `((save ,first-reg))
(statements seq1)
`((restore ,first-reg))))
Aanpassen van seq1
seq2)
(preserving (cdr regs) seq1 seq2)))))
Anders moeten er geen registers op de stack geduwd worden maar
kunnen we gewoon kijken naar de rest van de lijst van te conserveren
registers.

2

, 4 Samenvoegen van gegenereerde code
(define (append-instruction-sequences . seqs)
(define (append-2-sequences seq1 seq2)
(make-instruction-sequence
(list-union (registers-needed seq1)
(list-difference (registers-needed seq2)
(registers-modified seq1)))
De registers die nodig zijn, zijn de registers die nodig zijn voor
de eerste sequentie en het verschil van de registers die nodig zijn
voor de tweede sequentie en de registers die aangepast worden door
de eerste sequentie
(list-union (registers-modified seq1)
(registers-modified seq2))
De registers die aangepast worden zijn de unie van de registers die
door de eerste en de tweede sequentie aangepast worden.
(append (statements seq1) (statements seq2))))
De instructies van de eerste en tweede sequentie worden gewoon aan
elkaar gehangen.
(define (append-seq-list seqs)
(if (null? seqs)
(empty-instruction-sequence)
Als de lijst van aan elkaar te hangen sequenties leeg is geven we de
lege instructiesequentie terug
(append-2-sequences (car seqs)
(append-seq-list (cdr seqs)))))
Anders doen we een append-2-sequences van de eerste sequentie aan
een recursieve oproep van append-seq-list met de rest van de
sequenties.
(append-seq-list seqs))
Eerst roepen we append-seq-list op met de meegegeven lijst van
instructiesequenties




3

Libro relacionado

Escuela, estudio y materia

Institución
Estudio
Grado

Información del documento

¿Un libro?
No
¿Qué capítulos están resumidos?
Hoofdstuk 5.5
Subido en
27 de julio de 2022
Número de páginas
16
Escrito en
2019/2020
Tipo
RESUMEN

Temas

$4.76
Accede al documento completo:

100% de satisfacción garantizada
Inmediatamente disponible después del pago
Leer en línea o como PDF
No estas atado a nada


Documento también disponible en un lote

Reseñas de compradores verificados

Se muestran los comentarios
3 año hace

5.0

1 reseñas

5
1
4
0
3
0
2
0
1
0
Reseñas confiables sobre Stuvia

Todas las reseñas las realizan usuarios reales de Stuvia después de compras verificadas.

Conoce al vendedor

Seller avatar
Los indicadores de reputación están sujetos a la cantidad de artículos vendidos por una tarifa y las reseñas que ha recibido por esos documentos. Hay tres niveles: Bronce, Plata y Oro. Cuanto mayor reputación, más podrás confiar en la calidad del trabajo del vendedor.
lennyS Vrije Universiteit Brussel
Seguir Necesitas iniciar sesión para seguir a otros usuarios o asignaturas
Vendido
163
Miembro desde
6 año
Número de seguidores
62
Documentos
34
Última venta
3 meses hace

4.5

6 reseñas

5
4
4
1
3
1
2
0
1
0

Documentos populares

Recientemente visto por ti

Por qué los estudiantes eligen Stuvia

Creado por compañeros estudiantes, verificado por reseñas

Calidad en la que puedes confiar: escrito por estudiantes que aprobaron y evaluado por otros que han usado estos resúmenes.

¿No estás satisfecho? Elige otro documento

¡No te preocupes! Puedes elegir directamente otro documento que se ajuste mejor a lo que buscas.

Paga como quieras, empieza a estudiar al instante

Sin suscripción, sin compromisos. Paga como estés acostumbrado con tarjeta de crédito y descarga tu documento PDF inmediatamente.

Student with book image

“Comprado, descargado y aprobado. Así de fácil puede ser.”

Alisha Student

Preguntas frecuentes