Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
device-modeling-language — Предметно-ориентированный язык для написания быстрых функциональных моделей устройств для виртуальных платформ. Компилирует DML в C с вызовами API, адаптированными для симулятора Intel Simics, что позволяет проводить симуляцию аппаратного обеспечения и тестирование безопасности. | Kitploit
Инструменты/GitHubGitHub/intel/device-modeling-language
Безопасность встроенных системВиртуализация для безопасностиАппаратная БезопасностьБезопасность оборудования и IoTАнализ Прошивок
GitHubintel/device-modeling-language

device-modeling-language

Предметно-ориентированный язык для написания быстрых функциональных моделей устройств для виртуальных платформ. Компилирует DML в C с вызовами API, адаптированными для симулятора Intel Simics, что позволяет проводить симуляцию аппаратного обеспечения и тестирование безопасности.

Популярное

Смотреть все →

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

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Репозиторий
139521 месяц назадПроверено Kitploit

Язык моделирования устройств (DML)

Язык моделирования устройств (DML) — это предметно-ориентированный язык для написания быстрых функциональных моделей или моделей на уровне транзакций для виртуальных платформ. DML предоставляет высокоуровневые абстракции, подходящие для функциональных моделей устройств, включая такие конструкции, как банки регистров, регистры, битовые поля, отправка событий, интерфейсы между моделями и журналирование. Код DML компилируется компилятором DML (DMLC), который генерирует код на C с вызовами API, адаптированными для конкретного симулятора.

В настоящее время компилятор поддерживает создание моделей для симулятора Intel® Simics®, но в будущем могут быть добавлены другие бэкенды.

Сборка и тестирование DMLC

Для сборки DMLC необходима установка симулятора Simics и настроенный проект Simics.

Использование публичного релиза симулятора Intel Simics

Если у вас еще нет установки симулятора Simics или доступа к симулятору Simics через коммерческие каналы, установите публичный релиз симулятора Intel Simics и создайте проект Simics (автоматически в стандартном процессе установки).

Сборка DMLC из проекта Simics

В вашем проекте Simics выполните checkout репозитория DML в каталог modules/dmlc. В корне проекта выполните make dmlc (или bin\make dmlc в Windows).

Тестирование DMLC из проекта Simics

Чтобы запустить модульные тесты, поставляемые с DMLC, выполните make test-dmlc или bin/test-runner --suite modules/dmlc/test из корня проекта.

Переменные окружения

Следующие переменные окружения полезны при разработке DMLC. Если вы регулярно работаете с локально собранным DMLC, рассмотрите возможность установки переменных DMLC_DIR, T126_JOBS, DMLC_PATHSUBST и PY_SYMLINKS в вашем .bashrc. Остальные переменные лучше включать только при необходимости.

DMLC_DIR

После сборки DMLC вам необходимо установить DMLC_DIR в <your-project>/<hosttype>/bin при последующих вызовах make, чтобы собирать устройства с помощью локально собранного компилятора. <hosttype> — это либо linux64, либо win64 в зависимости от типа вашей хост-системы.

T126_JOBS

При установке указанное количество тестов выполняется параллельно.

DMLC_PATHSUBST

При сборке DMLC несколько файлов библиотеки DML, например dml-builtins.dml, копируются в <hosttype>/bin. При возникновении ошибки компиляции сообщения об ошибках обычно указывают на эту копию, а не на исходный файл. Установив DMLC_PATHSUBST в <hosttype>/bin/dml=modules/dmlc/lib, сообщения об ошибках будут переписаны так, чтобы указывать на исходный файл. <hosttype> — это либо linux64, либо win64 в зависимости от типа вашей хост-системы.

PY_SYMLINKS

При установке в 1, make dmlc будет создавать симлинки на файлы Python вместо их копирования. Это дает два эффекта: трассировка стека Python будет указывать на исходный файл в репозитории, и вам не нужно повторно запускать make после редактирования файлов Python.

DMLC_DEBUG

При установке в 1 непредвиденные исключения в компиляторе выводятся в stderr. По умолчанию трассировка скрывается в файле dmlc-error.log.

DMLC_CC

Переопределяет компилятор по умолчанию в модульных тестах.

DMLC_PROFILE

При установке DMLC выполняет самопрофилирование и записывает профиль в файл .prof.

DMLC_DUMP_INPUT_FILES

При установке DMLC создает архив .tar.bz2, содержащий все исходные файлы DML, упакованные в виде, который можно скомпилировать отдельно. Это полезно, когда проблема DML возникает в сложной среде сборки и требуется воспроизвести проблему изолированно. В созданном архиве все файлы DML находятся в одном каталоге (либо на верхнем уровне, либо в серии подкаталогов с именами _), а относительные импорты обрабатываются путем включения симлинков в архив. В Windows DMLC иногда не может правильно разрешить эти симлинки; по этой причине рекомендуется извлекать и компилировать архив только в Linux.

DMLC_GATHER_SIZE_STATISTICS

При установке DMLC выводит файл с окончанием -size-stats.json, который содержит статистику генерации кода, полезную для уменьшения размера генерируемого кода и увеличения скорости компиляции. Файл показывает, сколько кода на C генерируется для каждого метода DML. Вывод представляет собой список троек [tot_size, location, num], где tot_size — общее количество байт кода на C, сгенерированного из одного объявления метода, num — сколько раз код на C был сгенерирован из этого объявления (потому что он был развернут шаблоном), а location — исходное местоположение объявления.

Запись с большим tot_size и большим num может быть уменьшена путем объявления метода как shared; это должно примерно разделить размер на num. Запись с большим tot_size и num, равным 1, обычно означает, что метод доминируется такой конструкцией, как #foreach или #select, и может быть уменьшен путем выноса тела цикла в отдельный метод или переработки цикла в другую конструкцию, например foreach.

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

Скачать инструмент