Как написать программу на ASM под виндой?

Тема в разделе "WASM.BEGINNERS", создана пользователем седьмой, 29 июн 2017.

Метки:
  1. Indy_

    Indy_ Well-Known Member

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

    По этой причине(логика изложения) и ценятся базовые публикации - C&R, W&I etc. Я с вами полностью согласен, мсдн это не обучалка, это справочник.
     
    седьмой нравится это.
  2. седьмой

    седьмой Member

    Публикаций:
    0
    Регистрация:
    27 июн 2017
    Сообщения:
    66
    Адрес:
    г.Киров
    это что, можно немного подробнее?
     
  3. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    Керниган и Ритчи; Windows Internals(то что вам нужно).
     
    седьмой нравится это.
  4. Ronin_

    Ronin_ Active Member

    Публикаций:
    1
    Регистрация:
    24 дек 2016
    Сообщения:
    252
    K&R
     
    Indy_ нравится это.
  5. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.074
    Вот сам и ответил на свой вопрос :) напиши сначала весь код на сях, компиль тебе даёт Асм-листинг и уже можешь по профайлам смотреть где тормозуха и какими методами её лечить.
     
    седьмой нравится это.
  6. yashechka

    yashechka Ростовский фанат Нарвахи

    Публикаций:
    90
    Регистрация:
    2 янв 2012
    Сообщения:
    1.449
    Адрес:
    Россия
    Прочитал первых два поста - времени нет читать дальше. Скажу только, что нужно читать Солдатова второе издание, в первой уйма ошибок, их там охереть сколько, в USSR такое бы не выпустили вообще никак на полку, больше грамматических, но есть и технические ошибки, может их и больше, просто я про них ничего не знаю. Потом после Солдатова можно спокойно перейти на Four-Fo и но я бы начал с Волтера Они. Ещё есть две книги русские - Коммисарова - это шлак полный, не читайте, а Сорокина тянет на 3+, можно разок прочесть. Причем Солдатова надо 2 раза пройтись, со второго раза многие вопросы отпадут. Ну ещё хорошая книжка Руслан Облязов, но там ошибки вроде тоже есть. А я заказал пока парочку книг с ебэй с америки, тех которые нет в pdf, и нет на русском, сделаю книжки, конечно поделюсь. Не знаю приедут они или нет, 2,5 за каждую отдал. хотя они 98 года http://www.ozon.ru/context/detail/id/1861775/ цены конечно нонстопугар.
     
    седьмой нравится это.
  7. седьмой

    седьмой Member

    Публикаций:
    0
    Регистрация:
    27 июн 2017
    Сообщения:
    66
    Адрес:
    г.Киров
    Читаю уже 3ю главу, очень интересно и не видно конца и края. Боюсь что ваше предложение мне не подходит, мне мало написать драйвер, мне надо что бы он работал реалтаймово в винде. А поскольку это работа, а не контрольная в вузе, то думаю надо сперва оглядеть все пространство кода вокруг драйвера, а не просто его тиснуть в операционку, что бы он худо бедно работал. Поэтому пока читаю..., тем более что интересно...
    вам придется держать слова, раз сами дали, а за список литературы спасибо, это экономит много времени...
     
  8. horpis_real

    horpis_real Active Member

    Публикаций:
    0
    Регистрация:
    5 дек 2016
    Сообщения:
    141
    [​IMG]
     

    Вложения:

    • uOZM2e9GTlk.jpg
      uOZM2e9GTlk.jpg
      Размер файла:
      94,6 КБ
      Просмотров:
      820
  9. седьмой

    седьмой Member

    Публикаций:
    0
    Регистрация:
    27 июн 2017
    Сообщения:
    66
    Адрес:
    г.Киров
    Много еще непонятного, половину примерно прочитал, но похоже что Windows оперирует такими длительностями как 1 мс
    Код (Text):
    1.   neg eax                 ; задержка = 0 - ~50 мс
    и более того
    Значит теоретически Windows позволяет написать аппаратный драйвер с задержками кратными в 10 мкс.
     
  10. Indy_

    Indy_ Well-Known Member

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

    Длительность кванта потока примерно 20%100mcs(это время в течении которого ваш код будет исполняться непрерывно, затем исполнение будет отложено). Это время зависит от многих факторов. Потом ваш поток будет вытеснен на тоже или большее время.

    > Значит теоретически Windows позволяет написать аппаратный драйвер с задержками кратными в 10 мкс.

    Задержки относительны. Что вы измеряете в эти 10mcs ?

    Вы можите запретить планирование на время обработки подняв IRQL https://ru.wikipedia.org/wiki/IRQL
     
    седьмой нравится это.
  11. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    > DueTime - время (в 100-наносекундных интервалах)

    Это просто формат времени нт, его можно и в других единицах измерять.
     
    седьмой нравится это.
  12. седьмой

    седьмой Member

    Публикаций:
    0
    Регистрация:
    27 июн 2017
    Сообщения:
    66
    Адрес:
    г.Киров
    Я ничего не измеряю, просто с LPT хотел разобраться, вы же сами в начале темы писали, что он сам по себе может принимать данные на такой скорости 10 мкс (если я не ошибаюсь). Вы имеете в виду
    нужно настроить аппаратное прерывание по LPT порту и моя задача будет решена ? Такой совет уже был UbIvItS, я от него отказался, но может быть и есть смысл попробовать так сделать.
     
  13. Indy_

    Indy_ Well-Known Member

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

    Так ведь это ограничение на железо - RW в порт, но никак не связано с обработкой данных(временем работы кода).

    > нужно настроить аппаратное прерывание по LPT порту и моя задача будет решена ?

    Я не особо помню протокол пар порта, вроде как для прерывания там спец пин есть, но оно не наступает по изменению данных на порте.

    Нельзя запустить цикл чтения порта, что бы на чатоте мгц с него принимать данные - ось зависнет. Можно попытаться это сделать на другом процессоре, но это грязный хак - не известно сработает ли такое, так драйвера не строятся. Я уже говорил что обработка должна быть пакетной - пришло прерывание, начинается приём пакета данных, который накопил контроллер, подключённый к порту.

    В чём вообще проблема сделать интерфейсный контроллер, который будет накапливать данные, всё равно ведь такой контроллер подключен к порту ?

    И почему именно парпорт, а не стандарт usb ?
    Сейчас полно железа под любые протоколы и задачи. Стоит оно копейки.
     
    Последнее редактирование: 3 июл 2017
    седьмой нравится это.
  14. седьмой

    седьмой Member

    Публикаций:
    0
    Регистрация:
    27 июн 2017
    Сообщения:
    66
    Адрес:
    г.Киров
    Да нет никаких проблем, просто я инженер конструктор, а не программист в чистом виде, поэтому не все понятно, но постепенно разбираюсь.... Наверно вы правы можно как вариант usb порт посмоотреть
     
  15. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    седьмой нравится это.
  16. седьмой

    седьмой Member

    Публикаций:
    0
    Регистрация:
    27 июн 2017
    Сообщения:
    66
    Адрес:
    г.Киров
    Про USB примерно понял, спасибо всем за помощь, буду читать. Пока далее. Статьи прочитал, что то стало понятно, что то нет. Понял, что теоретически драйвер написать можно даже на ассемблере, но лучше на си, будет немного меньше кода. Затем его (драйвер) надо "внедрить" в ядро и через параметры вывести в пользовательский интерфейс, в том числе настроить распределение памяти, прописать в бд системы, предусмотреть вывод ошибок и удаление драйвера из системы, примерно понятно, надо пробовать и делать. Решил почитать еще Солдатова 2е издание, советуют почти все, конечно и другие книги, но Солдатов почти всегда среди авторов драйверов, при рекомендациях. Читать только начал и оказалось, что драйвер под Windows надо писать на программах из пакета DDK, сейчас видимо пакет называется WDK (до него еще не дошел). Поэтому пока два вопроса.
    1. До начала попытки написания любого аппаратного драйвера для Windows хочешь не хочешь надо читать WDK , так как только там находятся самые последние изменения ПО для написания, отладки и внедрения драйверов? Или программы неизменны по своему названию и после написания книги Солдатовым просто дорабатывались и обновлялись, а действия остались все те же, что описаны в книге?
    2. У меня на компьютере есть уже какой то пакет программный, вернее сразу был изначально
    upload_2017-7-4_8-6-44.png
    Он может как то помочь в написании драйвера или это что то другое не подскажете?
     
  17. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.708
    Последнее редактирование: 4 июл 2017
    седьмой нравится это.
  18. седьмой

    седьмой Member

    Публикаций:
    0
    Регистрация:
    27 июн 2017
    Сообщения:
    66
    Адрес:
    г.Киров
    Спасибо я почитаю сейчас внимательнее материал по ссылке, а у меня попутно вопрос про потоки я не понял самые азы. Многоядерный процессор это что такое? Какую роль он играет при написания драйвера? Или можно спросить наоборот. При написании драйвера надо/можно/нужно учитывать количество ядер процессора? Сколько потоков может быть в одном ядре? Может ли один поток обрабатываться на разных ядрах процессора? Каким образом от количества ядер/потоков зависит скорость работы драйвера? Можно ли на уровне драйвера управлять разными потоками/ядрами? Может это вопросы и не очень умные, но пока в голове путаница с ядрами и потоками не хочется браться за код, хотелось бы это как то распутать, если можно? В интернете все это есть, но не нашел, что бы где то по полочкам было все расписано.
     
  19. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.708
    седьмой,
    даже цитируя, ты не можешь внимательно прочитать цитату? порты 42h, 43h, 61h и про эти прерывания написано 42h,43h зарезервированы , 61h прерывания порты, порты ― это уровень железа и назначение портов не зависит от операционной системы, а почему именно эти ? там первый мой топик как раз и объясняет назначение портов с номерами 42h, 43h, 61h, читай внимательно:rtfm:
     
    седьмой нравится это.
  20. седьмой

    седьмой Member

    Публикаций:
    0
    Регистрация:
    27 июн 2017
    Сообщения:
    66
    Адрес:
    г.Киров
    Дуб. Понял, а про потоки? Вот кстати прочитал еще часть статьи параллельно, каши в голове прибавилось, тут не только порты с прерываниями можно будет спутать.... тут можно вообще отказаться от затеи разобраться с драйвером.
    http://web.archive.org/web/20121018101931/http://wasm.ru/article.php?article=pipm01
    Драйвер работает в однопользователском режиме, без потоков и ядер?