Salc x64

Тема в разделе "WASM.BEGINNERS", создана пользователем Demon13, 1 янв 2020.

Метки:
  1. Demon13

    Demon13 Member

    Публикаций:
    0
    Регистрация:
    16 ноя 2018
    Сообщения:
    41
    Здравствуйте, форумчане. Инструкция salc может выполнятся только в 32 битном режиме. У меня есть необходимость использовать её 64 битном приложении. Есть ли варианты, как это можно сделать? Возможно, вы знаете способы как переключиться в 32 битный режим, выполнить salc там.

    P.s альтернативные варианты а-ля SBB al, al и т.п неприемлемы, нужна именно salc.
    Буду рад, если не будут задаваться вопросы по типу:"Зачем тебе это нужно?" и т.д.
     
  2. Indy_

    Indy_ Well-Known Member

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

    IA, Intel® 64 and IA-32 Architectures Software Developer’s Manual
    Combined Volumes:
    1, 2A, 2B, 2C, 2D, 3A, 3B, 3C, 3D and 4

    Данной инструкции не существует. Есть инструкции логического сдвига SAL/SAR/SHL/SHR—Shift

    IA, CHAPTER 3 INSTRUCTION SET REFERENCE
     
  3. Demon13

    Demon13 Member

    Публикаций:
    0
    Регистрация:
    16 ноя 2018
    Сообщения:
    41
    Интелом она не документирована
     
  4. Indy_

    Indy_ Well-Known Member

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

    Конечно, такая инструкция была на z80.
     
  5. Demon13

    Demon13 Member

    Публикаций:
    0
    Регистрация:
    16 ноя 2018
    Сообщения:
    41
    Ну так каким же образом она тогда она у меня работает в 32 битных программах?
     
  6. Indy_

    Indy_ Well-Known Member

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

    Какая кодировка, покажите у инструкции; если нет, то убей себя сам что бы не мучиться.
     
  7. Demon13

    Demon13 Member

    Публикаций:
    0
    Регистрация:
    16 ноя 2018
    Сообщения:
    41
  8. Indy_

    Indy_ Well-Known Member

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

    0xD6 ?

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

    https://ibb.co/JyQPg20
     
  9. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    1.995
    Undocumented instructions
    Скорей всего никак. Если интел по какой-то причине не публиковали инструкцию в своих мануалах (см. One-byte opcode map), но она по каким-то причинам была, интелу ничего не мешает сделать вид, что ее не было.
     
  10. Indy_

    Indy_ Well-Known Member

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

    Поэтому там пустое поле. После обновления прошивки(микрокода) этот опкод может вести себя не определенным образом, незачем такое использовать. Интересно зачем это тс ?
     
  11. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    1.995
    Indy_, as a 1-byte alternative of SBB AL, AL
     
  12. Indy_

    Indy_ Well-Known Member

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

    Но зачем, какая цель ?
     
  13. Demon13

    Demon13 Member

    Публикаций:
    0
    Регистрация:
    16 ноя 2018
    Сообщения:
    41
    Ответ: "исследовательский интерес" устроит?
     
  14. f13nd

    f13nd Well-Known Member

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

    Indy_ Well-Known Member

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

    С тобой давно всё ясно, а вот с этим не ясно. Если посмотреть его темы - uefi и какая то сборка(конструктор), не понятно. Зачем нужно d6 не понятно, чем он занимается.

    Demon13,

    Какая задача ?
     
  16. Demon13

    Demon13 Member

    Публикаций:
    0
    Регистрация:
    16 ноя 2018
    Сообщения:
    41
    Новичок я, люблю софт исследовать, d6 показалась мне крайне любопытной. Не зря ведь интел даже не упоминают.
    --- Сообщение объединено, 1 янв 2020 ---
    Хочу попытаться запустить эту salc в 64 битной проге. Возможно ли в 64 битной программе исполнить инструкцию, как 32 битную. Есть ли что-то наподобие heaven's gate, только наоборот - из 64 в 32?
     
  17. Indy_

    Indy_ Well-Known Member

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

    Да нет, тут этим просто так не интересуются обычно.
     
  18. Demon13

    Demon13 Member

    Публикаций:
    0
    Регистрация:
    16 ноя 2018
    Сообщения:
    41
    Я вас несовсем понял
    --- Сообщение объединено, 1 янв 2020 ---
    Indy_, вы ждёте признания, что я с помощью этого Пентагон ломать буду. Всё проще. Тут самый адекватный форум, сами понимаете, что с подобными вопросами мало куда обратиться можно.
     
  19. Indy_

    Indy_ Well-Known Member

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

    Так ведь это обычная логическая инструкция, это же не ветвление вызывающее шлюз. Кодировка в 64 отличается от 86, но для инструкций без адресации она обычно одинакова, только разница в длине регистров. Не ясно зачем юзать андок логические инструкции, но так же и не понятно какая с этой сложность. Если нет выборки, те операнды - регистры, а кодировка верная, то не возникнет исключения.
    --- Сообщение объединено, 1 янв 2020 ---
    https://wasm.in/threads/nedokumentirovannye-instrukcii.2866/#post-35932

    Единственно возможное применение которое могло было бы быть раньше https://wasm.in/threads/trudnoehmulnye-api.11478/#post-129540
    - остановить ав вирт машину. Но врядле сейчас это сработает, да и давно от этих одноразовых методов отказались, используя более общие.
     
  20. Thetrik

    Thetrik UA6527P

    Публикаций:
    0
    Регистрация:
    25 июл 2011
    Сообщения:
    875
    Можешь попробовать переключится в 32 битный режим, там выполнить, а потом вернуться в 64 битный, типа такого:
    Код (ASM):
    1.  
    2. use64
    3. sub rsp, 8
    4. mov dword [rsp+4], 0x23
    5. mov dword [rsp], $+8
    6. use32
    7. retf
    8. db 0xd6
    9. jmp 0x33:$+7
    10. int3
    11.  
     
    _edge и Mikl___ нравится это.