TGViewer
PLComp PLComp @plcomp · 843 subscribers
Post #53 771
Известно, что в компиляторе IR выбирается таким образом, чтобы облегчить порождение кода для выбранного класса целевых архитектур. Но бывает ли так, чтобы уже само абстрактное IR оказывало влияние на набор команд процессора? Оказывается, и такое существует, причем речь здесь не идет о предметно-ориентированном наборе команд или поддержке конструкций входного языка. Ниже два характерных примера.

BasicBlocker: Redesigning ISAs to Eliminate Speculative-Execution Attacks
https://arxiv.org/pdf/2007.15919.pdf

В этой работе предлагается добавить к ISA процессора специальную команду, отмечающую начало линейного участка (basic block) с указанием его длины. Это нужно для предотвращения Spectre-подобных атак. Здесь мы видим, как черты абстрактного управляющего графа (CFG) проступают в машинном коде.

Hardware Acceleration for Programs in SSA Form
https://pp.ipd.kit.edu/uploads/publikationen/mohr13cases.pdf

В современных компиляторах форму SSA стараются сохранять настолько долго, насколько возможно, включая и фазу распределения регистров. Тем не менее, в какой-то момент из формы SSA приходится выходить и выход это достаточно болезнен, поскольку требует формирования дополнительных машинных команд. Особенно это касается phi-инструкций, имитировать которые приходится с помощью команд, заменяющих параллельные копирования/перестановки регистровых значений. А если попробовать реализовать phi-инструкцию аппаратным образом? При этом вместо реального копирования часто можно обойтись перестановками, которые на аппаратном уровне заключаются в переименовании регистров. Здесь в ISA процессора появляются черты абстрактной phi-инструкции из формы SSA.

#ssa #isa
More from @plcomp
  1. Oct 10, 2025В наше время может сложиться впечатление, что компиляторы вне LLVM уже не создаются. Это,…
  2. Jun 16, 2025#видеозаписи Начинаем публиковать видео докладов sysconf 2025. Первым — выступление Петра…
  3. May 21, 2025Недавно удалось лично пообщаться с несколькими известными преподавателями разработки компи…
  4. Nov 26, 2024В ближайшее время в Москве пройдет три конференции, связанные с системным программирование…
  5. Sep 29, 2024Я и мой студент, Кирилл Павлов, опубликовали статью "Библиотека llvm2py для анализа промеж…
  6. Jul 23, 2024Первый интерпретатор просто использует эти функции напрямую для рекурсивного аннотирования…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →