1. Если вы только начинаете программировать на ассемблере и не знаете с чего начать, тогда попробуйте среду разработки ASM Visual IDE
    (c) на правах рекламы
    Скрыть объявление

Виртуализация для самых маленьких #3: готовим структуры, заполняем EPT

21 июн 2020

В прошлой части мы получили теоретическую базу по принципам настройки гипервизора и EPT. Применим их на практике. В первой части мы написали шаблон драйвера и заготовку для виртуализации всех процессоров - функцию VirtualizeAllProcessors. Код виртуализации будет необходимо выполнить на всех процессорах и это легко сделать через генерацию межпроцессорного прерывания функцией KeIpiGenericCall. Каждый логический процессор выполнит код, переводящий его в режим виртуализации, и продолжит свою...
Читать далее
Лайков +3 Комментариев1 Просмотров114

Виртуализация для самых маленьких #2: управляющие структуры, EPT, MTRR

18 июн 2020

Продолжаем писать изучать гипервизор. В прошлой части мы написали шаблон драйвера и заготовку функции для виртуализации всех логических процессоров. Прежде всего, следует напомнить, что под логическим процессором понимается или одно физическое ядро процессора (если процессор не поддерживает SMT/Hyper-Threading), или один логический поток в процессорах с поддержкой SMT/Hyper-Threading. Иными словами, если у процессора 4 ядра и он поддерживает Hyper-Threading (два потока на одно физическое...
Читать далее
Лайков +3 Комментариев5 Просмотров172

Виртуализация для самых маленьких #1: гипервизор - что, зачем и почему

15 июн 2020

[ATTACH] Развитие технологий аппаратной виртуализации (Intel VT-x и AMD-V) открывает широкие возможности по контролю выполнения кода на самом низком уровне. Привычные всем гипервизоры (Hyper-V, KVM, VMware или VirtualBox) позволяют запускать операционные системы в изолированном окружении: это становится возможным, благодаря способности процессоров работать в специальном режиме, в котором они контролируют доступ к ресурсам и обрабатывают выполнение заданных инструкций и событий. При...
Читать далее
Лайков +12 Комментариев17 Просмотров327

Прикладной SIMD 003: прежде, чем начать (часть 2)

13 мар 2018

Инициализация DSP-модуля После того, как мы смогли корректно идентифицировать необходимые нам расширения процессора, возникает необходимость в инициализации всего DSP-модуля. Частично мы уже выполнили большую часть работы, написав код идентификации и поиска поддерживаемых расширений процессора. Теперь осталось открыть завесу над тайной, зачем всё это нам нужно. Давайте представим себе ситуацию, когда нам необходимо выполнить какую-то функцию, осуществляющую достаточно нетривиальные и...
Читать далее
Лайков +1 Комментариев0 Просмотров1.467

Прикладной SIMD 003: прежде, чем начать (часть 1)

12 мар 2018

Предисловие В этой статье мы рассмотрим необходимый минимум действий для того, чтобы подготовить почву для работы с SIMD. Для этого необходимо выполнить ряд действий: удобно организовать проект; написать функцию идентификации процессора и поиска расширенных наборов инструкций; реализовать механизм инициализации всего DSP-модуля; написать функции инициализации и восстановления машинного контекста; собрать всё воедино с нужными опциями. Организация проекта Для того, чтобы впоследствии...
Читать далее
Лайков +1 Комментариев0 Просмотров1.409

Прикладной SIMD 002: краткий обзор

16 фев 2018

Предисловие Данная статья ставит целью в первую очередь рассказать хронологию появления тех или иных технологий SIMD в процессорах семейства x86 и одновременно кратко охарактеризовать их. Предыстория: FPU Изначально процессоры 8086 и 8088 (как более дешёвая версия 8086 с восьмибитной шиной данных) имели шестнадцатиразрядные регистры общего назначения и предоставляли возможность вычислений с использованием только целочисленной арифметики. Тем не менее в процессорах был предусмотрен набор...
Читать далее
Лайков +3 Комментариев6 Просмотров2.718

Прикладной SIMD 001: введение (часть 3)

16 фев 2018

Специфика программного кода Учитывая то, что плагины в первую очередь разрабатываются для использования в некоторой DAW (Digital Audio Workstation, цифровая звуковая рабочая станция), фреймы принято делить на отдельные моно-каналы. Благодаря этому значительно упрощается их коммутация, обработка и микширование в DAW (далее будет использоваться более общий и употребимый термин — хост (host)). Иными словами, стереоканал — это просто совокупность из двух моно-каналов. Каждый канал ассоциируется...
Читать далее
Лайков +2 Комментариев1 Просмотров1.158

Прикладной SIMD 001: введение (часть 2)

16 фев 2018

Анатомия сэмпла Разобравшись с частотой дискретизации и минимальной разрядностью сэмпла для нужд профессиональной аудиообработки, необходимо решить ещё один вопрос: каким образом семпл будет храниться в памяти. Как уже ранее упоминалось, для дискретизации по уровню сигнала может быть использована как линейная, так и нелинейная шкала. Нелинейная шкала была введена в цифровой телефонии для того, чтобы расширить динамический диапазон сигнала, но при этом сэкономить на размере сэмпла. На рисунке...
Читать далее
Лайков +1 Комментариев1 Просмотров1.282