Nano Hash - криптовалюты, майнинг, программирование

Можно ли добавить аргументы для пользовательских проходов в llvm

Теперь мы реализуем этап анализа для llvm, следуя этому руководству. и необходимо передать плагину дополнительный аргумент, как показано ниже:

opt -load /path/to/myplugin.so -mypass -mypass_option input.bc

Однако я не нашел ни одного руководства, в котором говорилось бы, как это сделать. Поэтому мне интересно, возможно ли это на практике.

Заранее спасибо.


  • Этот конкретный пример не является оптимальным, потому что идиома состоит в том, чтобы читать из stdin. Предположительно, вы имеете в виду другой вариант использования? 29.11.2012
  • Какой аргумент вам нужен? Насколько я знаю, пасс должен брать все, что ему нужно, из ИК и снова выводить ИК. 29.11.2012
  • @TobiasLangner Это какой-то аргумент, например, уровень анализа или место анализа прохода -mypass. Может быть, это похоже на уровень оптимизации gcc -O1, -O2 и т. д. 29.11.2012
  • @BrianCain Я собирался прочитать mypass_option из файла, однако кажется, что мне приходится изменять указанный файл каждый раз, когда я использую пропуск. 29.11.2012

Ответы:


1

Вам следует использовать библиотеку CommandLine, встроенную в LLVM. По сути, вы просто помещаете в начало файла .cpp прохода:

#include "llvm/Support/CommandLine.h"

static cl::opt<string> InputFilename("mypass_option", cl::desc("Specify input filename for mypass"), cl::value_desc("filename"));

Но я рекомендую вам проверить приведенную выше ссылку, в ней есть полный справочник + удобный раздел быстрого запуска.

Например, взгляните на встроенный проход для развертывания цикла — он определяет два беззнаковых и два логические параметры прямо в верхней части исходного файла с помощью cl::opt<unsigned> и cl::opt<bool>.

02.12.2012
  • Как получить значение из аргумента? 12.11.2020
  • просто получить доступ к InputFilename 09.12.2020
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..