User Tag List

Показано с 1 по 10 из 74

Тема: Осваиваем Hi-Tech C v3.09 для CP/M

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #31

    Регистрация
    08.05.2007
    Адрес
    Dnepropetrovsk
    Сообщений
    1,089
    Спасибо Благодарностей отдано 
    281
    Спасибо Благодарностей получено 
    70
    Поблагодарили
    49 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alcoholics Anonymous Посмотреть сообщение
    компиляторы начинаются с препятствия - они уже решили, что локальные переменные будут в стеке, и они будут проиндексированы с индексным регистром.
    Вот это, кстати, интересный момент.

    Немногие задумывались, почему большинство компиляторов (в том числе для x86 или ARM) размещают локальные переменные в стеке.

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

    Иногда компилятор может доказать, что та или иная функция не вызывает сама себя - ни прямо, ни через другие функции. Для таких функций он может отказаться от использования стека, а для прочих - нет. Вызов функции по указателю - это один из случаев, когда компилятор всегда должен подразумевать возможную рекурсию, ведь он не знает, что будет вызвано. Будет ли код, вызывающий функцию по указателю, вызван впоследствии рекурсивно.

    В этом смысле более эффективен Фортран, где рекурсия запрещена, и компиляторы имеют полную свободу оптимизации.

    Рекурсия иногда нужна, поэтому лучшим решением я бы считал введение атрибутов для функций, которые программист не собирается вызывать рекурсивно. Аналогично тому, как в GCC можно задать функциям атрибут, что они никогда не возвращаются.

  2. #31
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Осваиваем микрокомпьютер (1 и 2 ч.)
    от kas29 в разделе Пресса
    Ответов: 2
    Последнее: 06.02.2020, 01:27
  2. Видеоподкаст: "Old Gold Tech"
    от unbeliever в разделе Разный софт
    Ответов: 1
    Последнее: 12.06.2010, 13:41

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •