Я изучаю Bootstrapping из Red Dragon Book Compilers и нашел T-диаграмму для кросс-компилятора довольно запутанной. Я не могу понять, что подразумевается под «Запустить compiler1 через compiler2». Может ли кто-нибудь дать лучшее объяснение, аналогию или пример, связанный с каким-то реальным компилятором?
Сначала некоторые обозначения. По То есть компилятор для языка L , написанный на языке S , который производит выходной язык / машинный код N . Это надгробие или Т-диаграммы .
Компиляция компилятора
Предположим, у нас есть кросс-компилятор для нового языка L в языке реализации S, генерирующий код для машины N.
Предположим, у нас также есть существующий S-компилятор, работающий на машине M, реализующий код для машины M:
Запустите LSN через SMM для создания LMN
Конструкция компилятора