Здравствуйте, форумчане. Инструкция salc может выполнятся только в 32 битном режиме. У меня есть необходимость использовать её 64 битном приложении. Есть ли варианты, как это можно сделать? Возможно, вы знаете способы как переключиться в 32 битный режим, выполнить salc там. P.s альтернативные варианты а-ля SBB al, al и т.п неприемлемы, нужна именно salc. Буду рад, если не будут задаваться вопросы по типу:"Зачем тебе это нужно?" и т.д.
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
Demon13, 0xD6 ? Незачем юзать андок поля в таблицах, это не приводит к исключению, но всё равно это пустое поле в оп-таблице. https://ibb.co/JyQPg20
Undocumented instructions Скорей всего никак. Если интел по какой-то причине не публиковали инструкцию в своих мануалах (см. One-byte opcode map), но она по каким-то причинам была, интелу ничего не мешает сделать вид, что ее не было.
f13nd, Поэтому там пустое поле. После обновления прошивки(микрокода) этот опкод может вести себя не определенным образом, незачем такое использовать. Интересно зачем это тс ?
Могу только предположить, что тот сумашедший препод с буквофобией другому студенту дал задачу одними однобайтовыми инструкциями что-нибудь написать.
f13nd, С тобой давно всё ясно, а вот с этим не ясно. Если посмотреть его темы - uefi и какая то сборка(конструктор), не понятно. Зачем нужно d6 не понятно, чем он занимается. Demon13, Какая задача ?
Новичок я, люблю софт исследовать, d6 показалась мне крайне любопытной. Не зря ведь интел даже не упоминают. --- Сообщение объединено, 1 янв 2020 --- Хочу попытаться запустить эту salc в 64 битной проге. Возможно ли в 64 битной программе исполнить инструкцию, как 32 битную. Есть ли что-то наподобие heaven's gate, только наоборот - из 64 в 32?
Я вас несовсем понял --- Сообщение объединено, 1 янв 2020 --- Indy_, вы ждёте признания, что я с помощью этого Пентагон ломать буду. Всё проще. Тут самый адекватный форум, сами понимаете, что с подобными вопросами мало куда обратиться можно.
Demon13, Так ведь это обычная логическая инструкция, это же не ветвление вызывающее шлюз. Кодировка в 64 отличается от 86, но для инструкций без адресации она обычно одинакова, только разница в длине регистров. Не ясно зачем юзать андок логические инструкции, но так же и не понятно какая с этой сложность. Если нет выборки, те операнды - регистры, а кодировка верная, то не возникнет исключения. --- Сообщение объединено, 1 янв 2020 --- https://wasm.in/threads/nedokumentirovannye-instrukcii.2866/#post-35932 Единственно возможное применение которое могло было бы быть раньше https://wasm.in/threads/trudnoehmulnye-api.11478/#post-129540 - остановить ав вирт машину. Но врядле сейчас это сработает, да и давно от этих одноразовых методов отказались, используя более общие.
Можешь попробовать переключится в 32 битный режим, там выполнить, а потом вернуться в 64 битный, типа такого: Код (ASM): use64 sub rsp, 8 mov dword [rsp+4], 0x23 mov dword [rsp], $+8 use32 retf db 0xd6 jmp 0x33:$+7 int3