Как С кроссплатформенный? - PullRequest
0 голосов
/ 23 января 2019

C язык в конечном итоге скомпилирован для машинного языка ассемблера. Тогда как C может быть кроссплатформенным, если у каждого процессора свой синтаксис на ассемблере? Если я напишу ядро ​​операционной системы на C, то как мне заставить его работать на разных процессорах?

1 Ответ

0 голосов
/ 23 января 2019

C является переносимым на уровне исходного кода. Это означает, что вы можете перекомпилировать свою программу на выбранной платформе и запустить приложение там.

Вы можете найти историю C в википедии , например. В то время программирование выполнялось на ассемблере для каждой конкретной машины, поэтому наличие языка программирования высокого уровня (к тому времени) было благословением: оно ускорило разработку, а также позволило переносить программы с одной машины на новую. просто путем переноса компилятора (позднее компилятор C мог быть написан на самом C, что снова ускоряет процесс портирования, но это уже другая история).

В частности, идея переноса UNIX между операционными системами появилась, когда на PDP-7 работала UNIX, а появилась PDP-11. Наконец, даже ядро ​​UNIX было переписано на C, что сделало операционную систему действительно популярной из-за легкого портирования: нужно было только написать небольшое количество сборок для очень специфических частей ядра, чтобы вы могли иметь UNIX и запуск на новой машине в ближайшее время, по крайней мере, по сравнению с другими операционными системами того времени.

...