а) То, что указанный код следует объявить функцией – это без сомнения правильно. У Award есть очень красивое название для макросов, организующих такого рода вызовы: ROMCALL (хотя там в большинстве случаев используется SP).
б) Не открою тайну: ММХ-регистры в примере выше используются в отсутствие стека как временные хранилища
в) Все-равно нужно отслеживать вызовы функции из разных точек. Все-равно это приходится делать комментариями, и это трудоемко и неудобно.
P.S. Лучше выложить бинарный код исследуемого BIOS и дизассемблированный файл IDA. Я понимаю, что не хочется выставлять на показ черновики. Возможно и польза будет мизерная. Но это облегчает понимание и помогает общению.
а) То, что указанный код следует объявить функцией – это без сомнения правильно. У Award есть очень красивое название для макросов, организующих такого рода вызовы: ROMCALL (хотя там в большинстве случаев используется SP).
б) Не открою тайну: ММХ-регистры в примере выше используются в отсутствие стека как временные хранилища
в) Все-равно нужно отслеживать вызовы функции из разных точек. Все-равно это приходится делать комментариями, и это трудоемко и неудобно.
P.S. Лучше выложить бинарный код исследуемого BIOS и дизассемблированный файл IDA. Я понимаю, что не хочется выставлять на показ черновики. Возможно и польза будет мизерная. Но это облегчает понимание и помогает общению.