The Kernel-Bridge Framework

Тема в разделе "WASM.PROJECTS", создана пользователем HoShiMin, 18 ноя 2018.

  1. HoShiMin

    HoShiMin Well-Known Member

    Публикаций:
    5
    Регистрация:
    17 дек 2016
    Сообщения:
    1.422
    Адрес:
    Россия, Нижний Новгород
    Хотел сначала взять его, но там ECMA 5.1 - старенький. И, судя по тестам, в два раза медленнее, чем QuickJS.
    Если речь именно о сборке драйверов, то раст и так их собирает (на гитхабе видел примерчики) - проблема только в отсутствии хедеров (всё необходимое объявляем ручками).
    Про Nim хз, но да - всё сводится к портированию юзермодной CRT. Если бинарники не юзают что-то специфичное для юзермода, типа юзермодных апишек, которым нет аналогов в ядре, то заведётся.
     
    Последнее редактирование: 20 июл 2020
  2. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.241
    У Нима вроде был свой аллокатор потюненный под ихний сборщик мусора, то есть он на куче ничего не выделял. Сейчас они пилят нечто среднее между Растовским овнершипом и счетчиком ссылок, это у них называется arc/orc. Это существенно экономит память, в принципе в этом режиме или в режиме мануального управления памятью Ним должен быть вполне юзабелен для дров.
     
  3. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.546
    Адрес:
    Russia
    Это да.
    Мне кажется достаточно собирать бинари в юзере и пулять их в ядро. А там уже просто править колы.
    Но может быть есть какая-то причина по которой ТС выбрал компиляцию прямо в ядре.
     
  4. HoShiMin

    HoShiMin Well-Known Member

    Публикаций:
    5
    Регистрация:
    17 дек 2016
    Сообщения:
    1.422
    Адрес:
    Россия, Нижний Новгород
    Так это и не компилятор, а обычный скриптовый движок. С похожим на плюсы синтаксисом, но скриптовый.
    Для экспериментов и прототипирования самое то.
     
  5. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.241
    Да, например, запилить себе Генту Линукс внутри НТшного ядра.
     
  6. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.076
    HoShiMin, а когда ты такое безобразие с ядром вытворяешь, акь себя система в целом ведёт? фризит? :)
     
  7. HoShiMin

    HoShiMin Well-Known Member

    Публикаций:
    5
    Регистрация:
    17 дек 2016
    Сообщения:
    1.422
    Адрес:
    Россия, Нижний Новгород
    А чего ей фризить? Я же исполняюсь в своём потоке на PASSIVE_LEVEL, никому не мешаю, никого не трогаю, починяю примус.
     
  8. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.076
    а запусти там акую-нть тяжёлую задачу, например тупо бесконечный цикл а-ля..

    xor %rax, %rax
    dec %rax

    :)
     
  9. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    UbIvItS,

    Не верный вопрос.

    IA, 24.6.2 Processor-Based VM-Execution Controls
    IA, Table 24-6. Definitions of Primary Processor-Based VM-Execution Controls
    IA, Table 24-7. Definitions of Secondary Processor-Based VM-Execution Controls

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

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.241
    Инде хлебом не корми, дай любые технологии на свои аверские задачи натянуть. Везде визоры видит.
     
  11. HoShiMin

    HoShiMin Well-Known Member

    Публикаций:
    5
    Регистрация:
    17 дек 2016
    Сообщения:
    1.422
    Адрес:
    Россия, Нижний Новгород
    Почему? Гипервизору не важен режим: в месте, откуда хочешь начать трассировку, затриггерил #VMEXIT, а дальше иди по коду пошагово или взводя Trap Flag в EFLAGS и обрабатывая прерывания, или взводя специальный Monitor Trap Flag (не путать с EFLAGS.TF), который специально сделан в VT-x, чтобы генерировать #VMEXIT после выполнения каждой инструкции в госте.

    А вообще, мы обсуждаем уже не гипервизор, а скриптовый движок (см. пост #37)
     
  12. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    HoShiMin,

    Разумеется использовать штатную трассировку. И какой же тогда профайл и зачем тогда нужен есчо один мод слой тормозов поверх, это не вопрос. Вообще как бы механизм гпв хард создан для реализации запуска ос в ос, а не для задач отладки. Из утери всех инструкций кроме системных гипер есчо как то работает, но какой прок от того что он работает я хз. Окно хеловорда - механизм крайне сложный, но практически от него толку нет.
    --- Сообщение объединено, 21 июл 2020 ---
    HoShiMin,

    Смотри тебе задали вопрос по обычным инструкциям которые пропускает вирта. Как ты это решишь, всю ось будешь трассировать ?
     
  13. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.241
    Вообще говоря, у Нима есть интересная фича, там скриптовый движок (который Ним использует для компайл тайм вычислений) доступен в стандартной библиотеке. Так что можно по фану попробовать запустить в ядре Ним в интерпретируемом режиме. Практическая применимость этого канеш сомнительна, но все же.
    --- Сообщение объединено, 21 июл 2020 ---
    Еще есть интересный язык Haxe, у которого есть виртуальная машина с JIT-компилятором HashLink.
     
  14. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    Rel,

    Какой есчо jit, как я помню ты не осилил юзермод сборку. Есть твоя тема, вот это позор.
     
  15. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.241
    Джитовского вида джитный джит. Я же не авер, чтобы "юзермод сборки" осиливать, я даже не знаю, что ты имеешь ввиду.
     
  16. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.076
    дело там не в видимости == этот простой цикл жжёт проц :)
     
  17. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    Rel,

    Твой полный слив https://wasm.in/threads/protektor-dlja-net-pe.33289/

    Какой смысл блокировать аккаунт, если поиск можно и без него выполнить :sarcastic:

    Школота про компиляцию в ядре рассказывает вот прикол.
     
  18. HoShiMin

    HoShiMin Well-Known Member

    Публикаций:
    5
    Регистрация:
    17 дек 2016
    Сообщения:
    1.422
    Адрес:
    Россия, Нижний Новгород
    Можно и отдельный поток через EFLAGS.TF, а можно и всю ось весь логический процессор через Monitor Trap Flag - хозяин барин. Сделать-то можно что угодно, было бы желание.
    Это уже околоэзотерика)
    У AngelScript'а, кстати, тоже есть опциональный джит - всего два файлика. Правда, затащить его в ядро ещё не пробовал.

    Кстати, UbIvItS, попробовал цикл, но есть нюанс: я пока тестирую в контексте системного потока, который грузит драйвер (прямо в DriverEntry) - там да, лагает. А когда утащу в IOCTL - по идее, проблем не будет.
     
  19. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    UbIvItS,

    Процик не передаёт управление вирте для обычных инструкций. Более просто говоря когда проц встретит особое событие он сгенерит сигнал вирте, всё остальное крутится вне её.
    --- Сообщение объединено, 21 июл 2020 ---
    HoShiMin,

    > Можно и отдельный поток через EFLAGS.TF

    Нельзя, но ты попробуй мне интересно что получится, думаешь я это не делал это было задолго до тебя есчо при Грейте :russian:
     
  20. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.241
    Ну энджелскрипт это тоже своего рода изотерика, если ты хочешь сделать что-то, что будут юзать другие люди, а не как Инде делает шлак, который годен только для его антивирусной компании, то лучше взять что-то более популярное: JS или Lua. JIT-компиляцию в ядро выглядит достаточно трудоемкой задачей, так что лучше обойтись простым интерпретатором. Чего вспомнил. Есть кстати mruby интерпретатор.