Привет, дневничок. Ещё один вечер охуительного компания в architecture descriptor файлах.
Оказалось, что ловеринг для PowerPC написан эээ не очень удобно для чтения.
Да и сам PPC... Например, там есть инструкция TWI. Она сравнивает регистр RA с филдом SI на основании TO бита, который может быть в промежутке от 0 до 4, где 0-1 это знаковые "больше" и "меньше", 3-4 - они же но беззнаковые, и 2 - равенство. Сэкономили так сэкономили! И потом в .ad на эту тему какие-то танцы. Главное чтобы во сне не приснилось.
Ещё там все густо намзано предикатами вида followed_by_acquire, думать почему уже слишком хочется спать, да и вроде нам это не нужно
Вначале смотрели x86 и aarch64, тоже грустили, но меньше.
Потом обнаружили порт mips64 от Loongnix и понимание пошло куда проще. Там люди пишут настоящие комментарии !!! И функции у них названы не так, как будто автор был на измене, как будто его лихоманка била. Всё чистенько, аккуратненько.
Очень сильно мешает отсутствие какой-либо документации вообще. Непонятно какие слова можно использовать в ad-файлах, хотя оно могло бы быть в вики.. Непонятно откуда берутся всякие операнды типа imm_63 (почему 63? это какой-то сдвиг?), хотя оно могло бы быть в комментариях. Итд итп. Нигде капсом не написано: "ВОТ ЭТОТ СЕТ ВАМ РЕАЛИЗОВАТЬ ОБЯЗАТЕЛЬНО, а все остальное - по желанию"
Думаю что надо начинать вести блог с документацией ко всему этому говну. (Хотя Оракл мог бы просто взять и выложить свою вики, наверняка у них таковая имеется).
В общем пока идея в том, что список необходимых для реализации вещей лежит в vmStructs, в секции " Matcher (C2 only) ". Надо вначале пройти по нему, и реализовать всё с помощью нарытого в ISA. И дальше наоборот - бежать по ISA и придумывать, какие вещи можно заматчить более умным образом.
Конец дня был ознаменован чтением вслух user-level ISA нашей платформы. От этого стало легко и приятно, и зачесалось qemu.
Отдельное совершенно пока непонятное - про i2c и c2i, стабы методов, трамплины (которые где-то реализованы, и где-то нет, не говоря уж о том что непонятно пока что это такое). Документации как повелось, нет. Надо разбираться.
Продолжаю наблюдение.