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); } }