Как я заставил свой C-компилятор для transputer работать на современном 64-битном Mac

Making portable my unportable transputer C compiler

Как я заставил свой C-компилятор для transputer работать на современном 64-битном Mac

Оскар Толедо Г. нашёл дискету со своим C-компилятором для transputer 1998 года и решил собрать его на MacBook Air M1. Код использовал int и указатели взаимозаменяемо, не имел прототипов и хранил 64-битные указатели в 32-битных целых. Пришлось переписать структуры данных, добавить прототипы и заменить устаревшие конструкции Small-C на полноценные struct. После 25 ошибок компилятор заработал, сохранив способность компилировать сам себя для transputer.

Я не особенно горжусь этим кодом, но давайте посмотрим пример того, что я сделал: if (nodo_temp->oper == N_RESULTA) { /* Функция, возвращающая структуру */ pals += (req_res = nodo_temp->der); nodo_b = -1; req = NO; } else { nodo_b имеет тип struct nodo *, но ему присваивается -1 даже без приведения типа.

Ещё за этот день

2026-09-24