Принципы кодирования инструкций Intel x86(-64) или "ехал префикс через префикс"

Тема в разделе "WASM.ARTICLES", создана пользователем aa_dav, 6 окт 2021.

  1. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    1.955
    Тезис: "Кодирование инструкций intel x64 надо было пересмотреть, лучше всего посоветовавшись со мной"
    Аргумент: "Потому что в нем уродливые префиксы, а набор инструкций процессора это штука, на которую надо любоваться и дрочить."

    Я может быть слишком сложно написал, но уверен, что все кроме тебя поняли мысль: префиксы это расширения полей опкода и операндов. Не голимый довесок, а оптимальная мера, к которой пришли в результате исследований. Если ты ни разу не видел архитектур с фрагментированными полями опкода и операндов, то это только твой уровень характеризует. Сколько и каких будет префиксов, какой будет их состав, нужно ли менять количество регистров общего назначения - все результат исследований большого коллектива образованных людей. Если с твоей печи это выглядит неоптимальным - сделай выборку из N реальных образцов программ, собери статистику и покажи на ней, что такая-то предложенная тобой мера привела бы к уменьшению объема кода на M процентов. Потому что как нетрудно догадаться, простота кодирования и декодирования инструкции вообще не критерий.
     
    Последнее редактирование: 7 окт 2021
  2. aa_dav

    aa_dav Active Member

    Публикаций:
    0
    Регистрация:
    24 дек 2008
    Сообщения:
    441
    Первое же что прошли на первом же опровержении тебя - это то, что сами инженеры в Intel охренели от такого дикого количества постепенно вводимых префиксов которые откусывали от плотности команд постоянно, что ввели префиксы нового поколения.
    VEX/EVEX.
    Тебе сразу же про это написали и ты тут же не смог ничего родить в своё оправдание кроме как бесмыслицы.
     
  3. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    1.955
    Ну здравствуй, дерево. Пост номер 2 в этом треде прочти наконец. Ну ввели и ввели, дальше что? Представляешь, новые наборы инструкций вводят время от времени, используются они мало где, и будь там хоть 15 байт префикс в среднем по палате что будет?
     
  4. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.250
    Ну этот тред, безусловно, забавный, но в связи с ним у меня возникает только один вопрос: почему люди, которые лучше всех шарят в том, как разрабатывать свои архитектуры, не разрабатывают свои архитектуры, а люди, которые только и умеют разрабатывать гуан, разрабатывают архитектуры? Загадка бытия...
     
  5. aa_dav

    aa_dav Active Member

    Публикаций:
    0
    Регистрация:
    24 дек 2008
    Сообщения:
    441
    Если поскребсти, то не только пишут, но и имплементируют: https://hype.retroscene.org/blog/1075.html
    Например имплементацию можно потыкать тут: http://alxhost.tk/SimpX/SimpX.html
    Но дай ка догадаюсь: твою точку зрения этот поворот в сюжете же не изменяет, так ведь?
    Ляпнул же чтобы ляпнуть, преисполненный ложным чувством своей значимости, никак иначе.
    --- Сообщение объединено, 7 окт 2021 ---
    Прочёл. Ты видимо подозреваешь своих читателей в исключительной степени тупизны если подумал, что никто не купится на это гнилое подначивание и не прочитает.
    Я перемотал тему и перечитал и ты сам ка иди и прочитай что просишь. Ты сам явно тупой не понял что нет там ничего осмысленного. Ни во втором ни в третьем сообщении в теме.
    А во втором твоём личном сообщении в теме только начинаются тупые отмазки за то чего ты не писал же - потому что никакого "второго сообщения в теме" нет и не было.
     
  6. Indy_

    Indy_ Well-Known Member

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

    Код (Text):
    1. LD HL, ( var2 ) ; 3 байта
    2. LD BC, ( var3 ) ; 4 байта, т.к. используется расширенный набор инструкций с префиксом $ED
    3. ADD HL, BC ; 1 байт
    4. LD ( var1 ), HL ; 3 байта
    - это же интерпретатор вирт машина, причём тут это. Это текстовая обработка и никакой кодировки там нет вовсе. zstrinput() что это, это команда скрипту, а не функция ОС. В 90-е не наигрался в спекки ?

    Там тоже были префиксы, ldir и прочий андок изврат. Я тоже писал интерпретер, могу поискать :)
     
  7. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.250
    Вообще никак не меняет, как в принципе какой-то наколеночный гуано-интерпретатор гуано-байткода может что-то изменить?
     
  8. aa_dav

    aa_dav Active Member

    Публикаций:
    0
    Регистрация:
    24 дек 2008
    Сообщения:
    441
    Потому что то, что у Rel загадка бытия у других есть ответ. Rel был неправ в своём изначальном высказывании и это факт.
    Rel-а сразу же скинули с мнимой вершины его самомнения - как только заикнулся, тут же и захлебнулся, полетел вверх тормашками.
    --- Сообщение объединено, 7 окт 2021 ---
    Если читать, то именно при том тут это - наколенная ISA которую я ради хобби пилю.
    Rel конкретно подставился когда начал требовать от меня - от человека который как бы критикует ISA от Intel то чтобы я делал свою ISA иначе не должен бубнеть.
    Тут Rel конечно облажался, т.к. свою ISA я действительно пилю и по его логике это у него нет никаких прав рассуждать о сабже. xD
    --- Сообщение объединено, 7 окт 2021 ---
    Тоже неправда - кодировка там конечно же есть и просто очень легко ложится на четыре шестнадцатеричных цифры слов - в слове $ABCD с точностью до бита A отвечает за инструкцию, C и D - за аргументы, а B - за то куда загрузить результат. Очень простая схема кодировки где почти нет исключительных ситуаций - все инструкции Simpleton исполняют команду "взять аргументы, пропустить через ALU и записать (или нет) в выход".
    Даже условные переходы делаются так.
     
  9. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.250
    Ну когда я или Индий будем на твоей ISA гонять тысячи семплов, тогда и поговорим, чего сейчас то обсуждать, когда у тебя кроме гуано-интерпретатора ничего нет? Когда железка на рынке появится то?
     
  10. Indy_

    Indy_ Well-Known Member

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

    Код (Text):
    1.     %GPAL MOD_USER32, 5B9E46FEH    ; @MessageBoxA() -> TR0
    2.        
    3.     %ICDT$ R1, "VM"
    4.  
    5.     %ICDT$ R2, "Hello"
    6.  
    7.     OP VM_SPUSH
    8.         BYTE 4    ; N
    9.         %SDB MB_OK
    10.         %SDR R1
    11.         %SDR R2
    12.         %SDB NULL    ; HMOD
    13.  
    14.     %SCALL R0, 4
    15.  
    16.     OP VM_ET
    - 13-го года интер, хоть работал под винь, в отличие от скриптового г-на выше.
     

    Вложения:

    • bVM.7z
      Размер файла:
      23,6 КБ
      Просмотров:
      125
  11. aa_dav

    aa_dav Active Member

    Публикаций:
    0
    Регистрация:
    24 дек 2008
    Сообщения:
    441
    У тебя просто по твоей же логике нет права рассуждать о сабже, а у меня есть.
    Когда буду пенсионером на FPGA попробую реализовать. Но сперва надо сделать софт чтобы было вокруг чего ему вращаться.
    --- Сообщение объединено, 7 окт 2021 ---
    Ты до сих пор не понял о чём рассуждаешь.
    Там нет скриптов на 100%.
    Там только самописный ассемблер в машинный код, всё.
    Если машинный код непонятен - то это прям пичалька.
     
  12. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.250
    Ну у меня тоже есть своя виртуальная машина так то, но решает она другие задачи.

    Так а чего ждать пенсии, пиши в Интел, они то тебя с твоими светлыми идеями на руках в кабинет CTO отнесут, не?
    --- Сообщение объединено, 7 окт 2021 ---
    Вызов АПИ по хешам штоль?
     
  13. Indy_

    Indy_ Well-Known Member

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

    > Там только самописный ассемблер в машинный код, всё.

    Да неужеле :preved:

    Код (Text):
    1.     case OP_AND:    // and
    2.             tmp = x & y;
    3.             mathTempApply();
    4.             break;
    5.     case OP_OR:    // or
    6.             tmp = x | y;
    7.             mathTempApply();
    8.             break;
    9.     case OP_XOR:    // xor
    10.             tmp = x ^ y;
    11.             mathTempApply();
    12.             break;
    13.     case OP_CADD:    // conditional add
    14.             cond = (x >> 12) & 0b1111;
    15.             x = x & 0b111111111111; // 12 bit
    16.             if ( x & 0b100000000000 )
    https://github.com/aa-dav/SimpX/blob/master/src/simpleton4.cpp
     
  14. R81...

    R81... Active Member

    Публикаций:
    0
    Регистрация:
    1 фев 2020
    Сообщения:
    141
    Ко всем: на ровном месте сраться-то за что?

    Несколько поддеРжу критику Intel, но под другим углом - мнемник.
    Логично ClC StC ClD StD Not JNC Neg.
    А это что за херня BtR BtC fChS CmC?
    "Я не Спиноза какая-нибудь, чтобы" мозгами "выделывать здесь всякие кренделя."
    Должно быть BtС - BitClear, BtN - BitNot, fChS - fNeg, СmC - NotC.

    aa_dav, повторюсь может быть и без FPGA https://ru.bmstu.wiki/Synopsys_ARC
    И еще, подписи микрокодов для несовременных процов может уже китайцы увели,
    но наши только расшифровали с некоторых.
    https://wasm.in/threads/melkomjagkie-vypustili-svoj-proc.33981/#post-423732
    P.S. По HDD и возможно SSD похоже кое-что уводили.
     
  15. aa_dav

    aa_dav Active Member

    Публикаций:
    0
    Регистрация:
    24 дек 2008
    Сообщения:
    441
    Я сам был ошеломлён когда инструкция процессора Z80 CCF была не антиподом своей похожеимённой SCF (Set Carry Flag), и как возможно все бы могли догадаться ортоганальная CCF могла значит Clear Carry Flag.
    Но нет - это означает Complement и инвертирует соответствующий флаг.
    На этом пару месяцев назад один американский ютубер подорвался как на мине (мосовский чувак с детства решил пересесть на спектрум).
    А то, что очищать флаг переноса на i8080 предполагается всякими and a - это да.
     
  16. aa_dav

    aa_dav Active Member

    Публикаций:
    0
    Регистрация:
    24 дек 2008
    Сообщения:
    441
    Неужели ты до сих пор не понял разницы между интерпретатором который интерпретирует текст программы и виртуальной машиной?
    Вот если бы ты в коде увидел if ( word == "add" ) тогда бы и мог возбудится.
    Но нет, здесь идёт сборка ассемблера в настоящий машинный код формат которого очень просто и исполняется этот машинный код, а не слова человекочитаемого ассемблера.
     
  17. Intro

    Intro Active Member

    Публикаций:
    0
    Регистрация:
    29 авг 2009
    Сообщения:
    562
    Ну такая фигня с префиксами получилась что интолы предполагали 8086 временным процессором, хотели iAPX 432 выпустить, но не получилось.
    Конечно, надо было делать расширяемую кодировку опкода, типа CCCCDDRR если CCCC = 1111b, то опкод расширяется на пару бит, 111111b ещё раз на пару бит и так далее, до разумных пределов. Не знаю в каких системах это используется, но где-то используется.
     
  18. KPG

    KPG Member

    Публикаций:
    0
    Регистрация:
    13 янв 2021
    Сообщения:
    121
    В PIC контроллерах разрядность командного слова (количество бит) зависит от семейства (14, 16, 18)
     
  19. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    1.955
    Да в том же интеле и используется. Внезапно. Задача проектирования системы команд - комплексная. По возможности наиболее часто используемые инструкции должны быть покороче, наименее используемые - как получится. И в пятнадцатый раз повторю, что простота и изящество кодирования - последнее, о чем нормальный инженер стал бы думать.
     
  20. q2e74

    q2e74 Active Member

    Публикаций:
    0
    Регистрация:
    18 окт 2018
    Сообщения:
    988
    Соглашусь, потому как это решается транслятором. А вот скорость вычислений из-за иной системы счисления, наличие быстрых обратимых вычислений, это существенно влияет на архитектуру.