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