Special Topics: Compiler Correctness
Lecture 20
Table of Contents
Compiler Correctness
Reflections on trusting trust
Finding compiler bugs automatically
Proving correctness
Compiler
- https://compcert.org/compcert-C.html
- https://xavierleroy.org/publi/compiler-certif.pdf
- https://www.cs.uoregon.edu/research/summerschool/summer12/curriculum.html
Systems software: https://vst.cs.princeton.edu/
OS: http://flint.cs.yale.edu/certikos/
https://en.wikipedia.org/wiki/Duff%27s_device
send(to, from, count)
register short *to, *from;
register count;
{
register n = (count + 7) / 8;
switch (count % 8) {
case 0: do { *to = *from++;
case 7: *to = *from++;
case 6: *to = *from++;
case 5: *to = *from++;
case 4: *to = *from++;
case 3: *to = *from++;
case 2: *to = *from++;
case 1: *to = *from++;
} while (--n > 0);
}
}