Информация об изменениях

Сообщение Re[14]: Две трагедии российской кибернетики. Часть 3. от 11.10.2011 10:56

Изменено 08.05.2015 5:11 netch80

minor fix

Здравствуйте, Bandy11, Вы писали:

B>Здравствуйте, netch80, Вы писали:


P>>>>Наврал в тех ветках больше всех, похоже, я. Все-таки очень мало я на ЕСках успел поработать. Боюсь, что знания у меня по этим вопросам не очень глубокие и не слишком прочные. Хотя учителя у меня там были очень серьезные, и, надеюсь, кое-что я у них перенял.


B>>> Система команд на ЕСке байтная (до сих пор помню некоторые 16-ые значения комманд) – проще было реассемблировать.


N>>Команды писались только 2-байтными порциями, если строго. При этом да, для чисто регистровых команд — часто первый байт — код команды, второй — регистры.


B>Команды MVC MVI MVD – занимали 3-4 байта


Я сказал "порциями". Любая команда занимала 2, 4 или 6 байт — на S/360 и AFAIR 370, а у более поздних есть варианты и длиннее. 4 байта — да, 3 — невозможно.

Такая же порционность, BTW, на PDP-11 и M68K (2 байта), ARM/thumb. Есть и по 4 байта (PPC, MIPS, ARM оригинальный), по 16 (Itanium). Такого, как на x86, где предельная длина — более чем дофига, а минимум — 1 байт, редко где ещё найдёшь.

Вообще, я не понимаю, почему при переходе на 32-разрядный режим в i386 не сделали замену однобайтных кодов на двухбайтные для команд, которые или страшно редкие, или скорость выборки команды не важна — это такие, как {push,pop} {cs,ds,es,ss}, daa, das, aaa, aas, aam, aad, bound, insb, outsb, sahf, lahf, xlat, callf, hlt, cli, sti, in/dx, out/dx. Видимо, просто не осознавали масштабов развития. Теперь для SSE*, AVX надо набирать начальные коды по 3-5 байт, а дизассемблерный выход реального кода выглядит просто страшно.
Re[14]: Две трагедии российской кибернетики. Часть 3.
Здравствуйте, Bandy11, Вы писали:

B>Здравствуйте, netch80, Вы писали:


P>>>>Наврал в тех ветках больше всех, похоже, я. Все-таки очень мало я на ЕСках успел поработать. Боюсь, что знания у меня по этим вопросам не очень глубокие и не слишком прочные. Хотя учителя у меня там были очень серьезные, и, надеюсь, кое-что я у них перенял.


B>>> Система команд на ЕСке байтная (до сих пор помню некоторые 16-ые значения комманд) – проще было реассемблировать.


N>>Команды писались только 2-байтными порциями, если строго. При этом да, для чисто регистровых команд — часто первый байт — код команды, второй — регистры.


B>Команды MVC MVI MVD – занимали 3-4 байта


Я сказал "порциями". Любая команда занимает 2, 4 или 6 байт. 4 байта — да, 3 — невозможно.

Такая же порционность, BTW, на PDP-11 и M68K (2 байта), ARM/thumb. Есть и по 4 байта (PPC, MIPS, ARM оригинальный), по 16 (Itanium). Такого, как на x86, где предельная длина — более чем дофига, а минимум — 1 байт, редко где ещё найдёшь.

Вообще, я не понимаю, почему при переходе на 32-разрядный режим в i386 не сделали замену однобайтных кодов на двухбайтные для команд, которые или страшно редкие, или скорость выборки команды не важна — это такие, как {push,pop} {cs,ds,es,ss}, daa, das, aaa, aas, aam, aad, bound, insb, outsb, sahf, lahf, xlat, callf, hlt, cli, sti, in/dx, out/dx. Видимо, просто не осознавали масштабов развития. Теперь для SSE*, AVX надо набирать начальные коды по 3-5 байт, а дизассемблерный выход реального кода выглядит просто страшно.