SSA как с\с++ компилирует

Тема в разделе "LANGS.C", создана пользователем _evil, 6 май 2018.

  1. _evil

    _evil Member

    Публикаций:
    0
    Регистрация:
    28 сен 2003
    Сообщения:
    31
    компиляторы С++ используют SSA формат для генерации кода. А как он в этом формате обрабатывает ссылки и указатели?
    (если их не учитывать, то взяв адрес с переменной и преобразуется следующее выражение(оно будет в новой переменной) то адрес будет уже неправильным).
    Заранее благодарен.
     
  2. reversecode

    reversecode Active Member

    Публикаций:
    0
    Регистрация:
    15 май 2008
    Сообщения:
    1.145
    это не формат, это алгоритм оптимизации выражений, в выражениях нет понятия присваивания
     
  3. _evil

    _evil Member

    Публикаций:
    0
    Регистрация:
    28 сен 2003
    Сообщения:
    31
    промежуточное представление
    а куда результат записывается?
    что ты этим хотел сказать ? может скажешь как с ссылками дело обстоит ?
    https://courses.cs.washington.edu/courses/cse501/04wi/slides/slides.slides.ps.pdf
    есть пример но я его не догоняю
     
  4. CurryHowardIsomorphism

    CurryHowardIsomorphism Member

    Публикаций:
    0
    Регистрация:
    13 май 2017
    Сообщения:
    91
    Там предлагается
    LLVM так и поступает. SSA только для регистров, а для памяти там не используется SSA-представление.
    Этим в тьюториале предлагают пользоваться для упрощения кодогенерации
    https://llvm.org/docs/tutorial/LangImpl07.html#memory-in-llvm
     
    Последнее редактирование: 7 май 2018
    _evil нравится это.
  5. _evil

    _evil Member

    Публикаций:
    0
    Регистрация:
    28 сен 2003
    Сообщения:
    31
    дак это тока для динамической памяти и вобще если прочитать дальше то они вводят i функцию
     
  6. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.198
    Адрес:
    Fryazino
    Так учитывайте. Кто вам не даёт?
    Взятие адреса это числовое преобразование, а в данном случае речь идёт о символьных. А во вторых основа адреса сохраняется так что всегда есть возможность восстановить адрес.
     
  7. CurryHowardIsomorphism

    CurryHowardIsomorphism Member

    Публикаций:
    0
    Регистрация:
    13 май 2017
    Сообщения:
    91
    Да. Я просто остановился на том, о применении чего мне точно известно.
    Применяют ли GCC или MSVC i-функцию вместо не-SSA памяти я не знаю.