Придумай инструкцию x86!

Тема в разделе "WASM.HEAP", создана пользователем alpet, 22 июн 2005.

  1. Indy_

    Indy_ Well-Known Member

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

    ТС не ясно что собирает, похоже на полиморф. Можно кучу использовать инструкций, который не делают ничего; это зависит от их зависимостей в dfg. К примеру можно использовать математику, если контекст не связан с fpu. Задача совершенно не понятна. В идеале зная какие регистры используются далее, можно их использовать. Это обычная самая примитивная генерация мусора. Можно даже не думать про контекст, выгружая его через pusha. Но врядле это какой то будет иметь эффект, авер это пройдёт элементарно.
     
  2. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    1.995
    Насколько я понял, он хочет через исключения имитировать прерывания.
     
  3. Indy_

    Indy_ Well-Known Member

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

    Прерывание это событие в другом моде. Так что хз какая задача. Похоже на полиморф сборку, скажите если я не прав.
     
  4. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    1.995
    Он в соседней теме выдвинул предположение, что было бы здорово апи реализовать через прерывания, через сех проще всего это смоделировать.
     
  5. Indy_

    Indy_ Well-Known Member

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

    > реализовать через прерывания

    А что это значит ?
     
  6. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    1.995
    А не, он прерывания портами ввода-вывода хотел заменить https://wasm.in/threads/hardware-dos-machine.33486/ ну то же самое в принципе, забрать аргументы в обработчике исключений, отправить на обработку, продолжить исполнение.
     
  7. Indy_

    Indy_ Well-Known Member

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

    Пока он сам не скажет ты не узнаешь. Этот человек мыслит по своему :preved:
     
  8. Paguo_86PK

    Paguo_86PK Руслан

    Публикаций:
    0
    Регистрация:
    8 окт 2007
    Сообщения:
    911
    Адрес:
    Ташкент
    Елe догадался, о ком речь… :whistle2:
    (Гвоздями не пахло…)

    Идея уходит ещё в бородатые годы эпохи «РАДИО-86РК»…
    У него портов ввода-вывода вообще не было, так как всё проецировалось в память.
    И хотелось (хотя бы мысленно) провести эксперимент, где один РЛК имеет 256 портов через нормальные IN/OUT-инструкции, но вместо различных УВВ/ПДП и прочей элементарной лабуды каждый из 256 портов ссылается на свой другой РЛК из 256.
    То есть, имеется 32 компьютера «Специалист», 32 компьютера «Орион-128», 32 компьютера «ZX-Spectrum» и т.д…
    И всем этим хозяйством заведует один центральный РАДИО-86РК - компьютер №257!

    Скажем, читает он порт №34. Это - «Орион-128» второй из 32. Сам РАДИО-86РК через пин WAIT процессора уходит в ожидание…
    А в Орионе срабатывает прерывание, он может на экране у пользователя что-то спросить и ждать ответ.
    Когда пользователь ответит, результат через код вернётся обратно центральному РАДИО-86РК и сигнал WAIT снимется.
    Тем самым, при единственном чтении/записи порта центральный компьютер может уйти в ожидание на минуты/сутки/годы…

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

    Мне важно, чтобы процесс работал в совершенно чистой среде (без обратной PC-совместимости).
    Тем самым, ни портов (стандартных) быть не должно, ни FPU.
    А под портами должны скрываться другие (системные/прикладные) процессы.

    Допустим, порт №1296126547 (не забывайте: я читаю EDX целиком все 32 бита) адресует ПК на планете Марс (индекс порта в хексу переведите) и ответ может прийти минимум - только через 4 минуты (в хороших условиях). И это значит, что приложение при чтении этого порта может уйти в ожидание на несколько минут.
    Это плохо? Если программист - олух и его программа только и занимается Марсианскими-транзакциями, безусловно - да!
    Но если программист серьёзно всё спланировал, то 4 минуты простоя в сутки - это нормально.

    Но, боюсь, Вы вообще сейчас заблудились в моих «грёзах»…

    P.S.: Тайм-аут (переварите пока это)… :russian:
     
  9. Intro

    Intro Active Member

    Публикаций:
    0
    Регистрация:
    29 авг 2009
    Сообщения:
    600
    Придумай инструкцию х86?
    Я бы сделал инструкцию типа COMISS для FPU, для условных переходов, а то как то геморрно сделано.
    Так же, обратную инструкцию для BT, т.е. установить бит в слове из флага CF.
    Flag32 flag = 0;
    flag.set(5, foo(param0));
    Кодируется одной инструкцией, а не кучей.
     
  10. Paguo_86PK

    Paguo_86PK Руслан

    Публикаций:
    0
    Регистрация:
    8 окт 2007
    Сообщения:
    911
    Адрес:
    Ташкент
    Нa заметку: MOV TR - Давно просто вызывают исключения.
    (Это для себя в рамках «эскейпно-портового» безобразия…)
     
  11. НетРегистрации

    НетРегистрации Member

    Публикаций:
    0
    Регистрация:
    1 фев 2020
    Сообщения:
    72
    к #269 FCOMI(P) FUCOMI(P) ? и даже есть FCMOVcc все для стековых регистров.
     
  12. al79

    al79 Алексей

    Публикаций:
    0
    Регистрация:
    11 май 2006
    Сообщения:
    133
    Адрес:
    Екатеринбург
    Что тут придумывать?
    Я половину этих инструкций не знал:

    И вспоминаю, была тут когда то задача (тема) которая оказывается решалась одной инструкцией PEXT.
     
  13. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    1.995
    Эти инструкции не безумные, просто узкоспециализированные. Часть из них дико поздние (rdseed судя по всему с 2012 года), поэтому ради обратной совместимости они наверное вообще никем не используются. У того же pshufb просто адовый потенциал например для конвертирования BE-LE сразу нескольких полей (в ip например все в BE кодируется), но это sse3 и 2004 год.
     
  14. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    Кстати, раньше вроде говорили, что собираются добавить отдельные инструкции для AES и GZIP алгоритмов прямо на проце. Это уже сделали или все еще планируют сделать или я что-то попутал?
     
  15. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.348
    Rel,
    aes давно уже есть.
     
  16. omne999666

    omne999666 Member

    Публикаций:
    0
    Регистрация:
    13 июл 2019
    Сообщения:
    11
    Инструкций как раз два десятка и одна из них хороша.
    Исходники на асм / SOURCE > ASM 1 - 21 .txt
     

    Вложения:

    • 1.ASM
      Размер файла:
      152 байт
      Просмотров:
      317
    • 2.ASM
      Размер файла:
      395 байт
      Просмотров:
      326
    • 3.ASM
      Размер файла:
      433 байт
      Просмотров:
      311
    • 4.ASM
      Размер файла:
      627 байт
      Просмотров:
      330
    • 5.ASM
      Размер файла:
      382 байт
      Просмотров:
      333
    • 6.ASM
      Размер файла:
      463 байт
      Просмотров:
      336
    • 7.asm
      Размер файла:
      358 байт
      Просмотров:
      292
    • 8.asm
      Размер файла:
      251 байт
      Просмотров:
      301
    • 9.asm
      Размер файла:
      384 байт
      Просмотров:
      313
    • 10.asm
      Размер файла:
      447 байт
      Просмотров:
      326
    • 11.asm
      Размер файла:
      396 байт
      Просмотров:
      330
    • 12.asm
      Размер файла:
      549 байт
      Просмотров:
      337
    • 13.asm
      Размер файла:
      766 байт
      Просмотров:
      341
    • 14.asm
      Размер файла:
      754 байт
      Просмотров:
      319
    • 15.asm
      Размер файла:
      444 байт
      Просмотров:
      322
    • 16.asm
      Размер файла:
      251 байт
      Просмотров:
      322
    • 17.asm
      Размер файла:
      218 байт
      Просмотров:
      324
    • 18.asm
      Размер файла:
      564 байт
      Просмотров:
      284
    • 19.asm
      Размер файла:
      359 байт
      Просмотров:
      339
    • 20.asm
      Размер файла:
      1,4 КБ
      Просмотров:
      321
    • 21.asm
      Размер файла:
      506 байт
      Просмотров:
      325
  17. M0rg0t

    M0rg0t Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 окт 2010
    Сообщения:
    1.576
    их добавили еще году в 2008 вроде, или чуть позже, гугли AES-NI. Даже локеры какие-то были, что это юзали.
     
  18. KyberMax

    KyberMax New Member

    Публикаций:
    0
    Регистрация:
    8 дек 2020
    Сообщения:
    17
    Для работы с юникодом, например.
     
  19. Alikberov

    Alikberov New Member

    Публикаций:
    0
    Регистрация:
    26 июл 2017
    Сообщения:
    21
    Вoт не знаю, может кто подскажет?
    В сети очень много сервисов онлайн-отладки, включая интерактивные, как вот этот, например.
    Но вот ознакомиться с некогда популярной MMX-технологией всё так же сложно.

    И я решил потратить весь выходной и сделать шуточный симулятор (не эмулятор) MMX-инструкций.
    Суть симуляции в том, что я взял свою оболочку эмулятора с ассемблером и переделал всё так, чтобы уже на уровне ассемблера MMX-операции не переводились в машинный код, а исполнялись. При этом ведётся лог всех MMX-регистров и снимки их состояний сохраняются и закрепляются за конкретной строчкой листинга.
    Перемещаясь кареткой по листингу мы перемещаемся по истории лога трансляции ассемблера в симуляцию.
    Не ручаюсь за корректность работы всех команд, так как за один выходной всё не отладишь.
    Да и список инструкций не полный: Лишь те, что использованы в конкретном алгоритме листинга…

    P.S.: Попробовать скрипт в работе можно по этой ссылке
     
    M0rg0t нравится это.
  20. Alikberov

    Alikberov New Member

    Публикаций:
    0
    Регистрация:
    26 июл 2017
    Сообщения:
    21
    Позвольтe поинтересоваться!

    Нa сколько актуальна сейчас информация по оптимизации, в частности, изложенная в статьях форума?
    На предварительных проверках онлайн этот код не уступает этому, но показывает неудовлетворительный результат холостого (без отрисовки) Брезенхэма, даже при несущественном количестве меток.
    (Алгоритм адаптирован от MMX на стандартные x86-инструкции в качестве эксперимента для запуска на старых ПК.)

    Спасибо!