Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm: Общие вопросы > секреты Интела


Автор: oleg1973 1.4.2005, 17:34
кароче ктото спрашивал тока я не помню мпро микрокомманды процессора, тоесть к примеру команда mov свою очередь состоит из набора микрокоманд которые в результате и выполняются процессором, точнее ее hex код (команды) является указателем на адресс в таблице микрокодов по которому в свою очеред процессо производит их выборку
самое интересное что данные микрокоды можно перепрограмировать
тоесть к примеру команда mov eax,0 заносит в регистр еах нолик
изменив несколько данную команду можно заставить ее делать и еше какуюнибуть операцию к примеру после занесения в еах нолика скопировать еах в евх
надеюсь преимушества обьяснять не нада?
и так как это работает:
для перевода проца в режим редактирования используется недокументированый опкод 0x0F0B
после него нада указать редактируемую команду
и после нее добавочную
сам микрокод занимает 4 байта
тоесть mov eax,0 выглядит как 10111000000000000000000000000000
как видно имеем кучу свободных ноликов
mov ebx,eax выглядит как 10001001110000110000000000000000
после наших махинаций данные числа сложатся и сформируют новую команду с новым опкодом
внимание!
если сумма чисел превысет 0xffffffff и запишется в проц то могут возникнуть проблемы с переполнением и появлением ошибок
так что перед тем как ченить химичить лучше на калькуляторе все проверить.

ну все в перед эксперементировать

за последствия я не отвечаю

Автор: Chingachguk 1.4.2005, 20:19
Чета я невкурил, как это так это.

1) Куда заносятся изменения ? В кристалл что-ли ? Не слишком крута ?
2) Если взять ту же mov eax,0 то команда будет типа opcode,operand(4). Хучь ты че суй в operand, а будет проста mov eax,другой операнд, ну а если ты опкод поменял, то эта уже будет не mov eax,operand, а что-та другое. Инженера ихние юзали-юзали байт опкода - да нехватило в конце концов - вот от этого видна и стали появляться команды с префиксами типа FF - по-моему это jmp dword ptr в 32-х битном коде или типа того.

Автор: oleg1973 1.4.2005, 21:23
Chingachguk
серезно
тоесть разложение команды на подкоманды
как на RISC
lsl r1,r1,#0x12

вот такое даже можно будет соорудить!

Автор: Girder 2.4.2005, 01:02
smile

PS: И тебя oleg1973 с 1 апреля smile

Автор: AISIN 28.4.2005, 09:37
А почему бы просто макроопределения не использовать!!!
Определяем макрокоманду с именем INCX1:
Код

INCX1     MACRO
                move X:(R2),X0
                move X0,A0
                inc      A
                move A0,x:(R2)
          ENDM

Макрокоманда INCX1 будет вызываться вот так
MM1 INCX1
--------------------------------------------------------------------------------------------------
А кто нибудь юзал ассемблер версии 6.2.0.?
Там можно делать вот так!
Код

ORI #$40,MR                   //,бит DM=1
MOVE X:(R1)+,X0  Y:(R5)+,Y0  // LSP1->x0; LSP2->y0
                                                    //(R1)+1->R1;(R5)+1->R5
MPY Y0,X0,A; X:(R1)+,X1 Y:(R5)+,Y1 //LSP1*LSP2->A
                   //MSP1->X1;MSP2->Y1;(R1)+!->(R1); (R5)+1->(R5)
MAC X1,Y0,A  A0,Y:(R0) //Сдвиг (А) на 1 бит вправо, затем
                                   //(A)+MSP1*LS2->A ;(A0)=DPO->Y:(R0)
////////..........//////////

Автор: oleg1973 28.4.2005, 19:30
AISIN
сильно загнул как ты smile

Автор: AISIN 28.4.2005, 20:48
oleg1973 Да я сам удивился когда это увидел! Вобщето этот ассемблер был специально разработан для мобильных устройств.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)