LINUX.ORG.RU

История изменений

Исправление i-rinat, (текущая версия) :

Да ничего особо интересного. Выше аноним давал ссылку на http://mcst.ru/files/511cea/886487/1a8f40/000000/book_elbrus.pdf, где общих чертах описывается суть. Я немного поковырялся с objdump, скармливая ему разные последовательности байт, и получил примерно то же, что написано в приложении 4. Команды переменной длины. Начинаются с 32-битного заголовка, где указывается длина команды, число nop’ов и какие чанки есть в нагрузке. Дальше идут байты с нагрузкой. Последовательность видов чанков, похоже, фиксирована, поэтому достаточно выставленных битов, чтобы разобрать последовательность. Каждый чанк это 4 или 2 байта. Какие-то биты кодируют операции, туда я уже не копал. Видимо, команда может состоять из нескольких чанков, не обязательно лежащих подряд. Видимо, как-то группируются указания к действию и непосредственные значения операндов. Это описано в книжке, в том самом приложении 4, но вникать уже было лень.

Не знаю, чего я сам там особенного ожидал.

Исходная версия i-rinat, :

Да ничего особо интересного. Выше аноним давал ссылку на http://mcst.ru/files/511cea/886487/1a8f40/000000/book_elbrus.pdf, где общих чертах описывается суть. Я немного поковырялся с objdump, скармливая ему разные последовательности байт, и получил примерно то же, что написано в приложении 4. Команды переменной длины. Начинаются с 32-битного заголовка, где указывается длина команды, число nop’ов и какие чанки есть в нагрузке. Последовательность видов чанков, похоже, фиксирована, поэтому достаточно выставленных битов, чтобы разобрать последовательность. Каждый чанк это 4 или 2 байта. Какие-то биты кодируют операции, туда я уже не копал. Видимо, команда может состоять из нескольких чанков, не обязательно лежащих подряд. Видимо, как-то группируются указания к действию и непосредственные значения операндов.