Существует ли язык программирования без стеков и кучи? - PullRequest
0 голосов
/ 19 сентября 2018

Существует ли статически скомпилированный язык программирования, который может быть как без стеков, так и без кучи?

Для данных такой язык не имеет концепции выделения памяти.Вместо этого требования к памяти программы будут полностью известны во время компиляции.

Для кода не будет концепции стека вызовов.Могут быть функции, но они будут встроены на каждом сайте вызова.

Меня особенно интересуют переносимые языки с некоторой формой реализации или компилятор, который создает собственные двоичные файлы.

1 Ответ

0 голосов
/ 19 сентября 2018

Чистый машинный язык x86 соответствует ограничениям без стеков и кучи (в пределах ограничений реального режима).Переносимость невозможна, если только у компилятора нет доступа к каждой ячейке памяти для всех аппаратных операций ввода-вывода (ячеек памяти), которые Исправлены для всех поддерживаемых платформ (это условиеисключает все динамические интерфейсы, включая шины PlugandPlay, USB и PCI / PCIE)

Совершенно возможно создать такую ​​структуру в жестких аппаратных пределах (каждое устройство должно быть скомпилировано и размещено при загрузке, как на старых компьютерахкак c64 или Apple II), но все функции должны быть предварительно скомпилированы в ОС, как в каждой возможной программе , которая должна работать на платформе.

Это больше не общая вычислительная платформа.Вместо этого запрограммируйте микроконтроллер, графический процессор или ASIC.

...