Без разницы как он написан. Прелесть инструмента разработки в его открытости, отзывчивости разработчиков и доступности. Смысла в бубнах и register переменных для параметров нет и не было. Кроме того, есть стандарты на модель вызова. А ещё хайтех имеет кривой и глючной оптимизатор, который использовать нельзя вообще. Вы его как юзаете? без оптимизатора или с ним? Беда, беда.
Всех желающих меня учить тонкостям хайтеха приглашаю в команду разработки подсистемы ZXDev3, на нём основанной. Что уже доказывает, что я ему уделил больше 5 минут. А хотя нет, отзасратыххайтек-совместимых мозгов лучше держаться подальше. Вот sayman хотел выставить идиотами меня и разработчиков SDCC и z88dk, а выставил клиническим дураком себя.
Мы пишем для Z80, значит весь низкий уровень в кодах. И доля его больше в сравнении с прикладным слоем.
Есть больше моделей, например, передача в регистрах. Но не везде, ибо такая модель непереносима.
В Паскаль-модели (__stdcall или в z88dk __z88dk_callee) и вызывающий, и вызываемый код точно знают, сколько параметров и каких типов используется. Именно поэтому процедура сама освобождает стек, зная, сколько именно надо освободить. Если ты имеешь в виду прямо из своего машкода узнать сколько стека занято, то в этой модели ты можешь точно узнать - посчитай сумму байт, занимаемую параметрами.
Сишная модель вызова (__cdecl или в z88dk обычная, по умолчанию) характерна тем, что вызываемый код точно не знает, сколько занимают параметры (функции с переменным числом параметров). Поэтому функция может вытащить один, а может несколько, сколько ей нужно. А вот вызывающий код всё равно ведь знает, сколько параметров ложил на стек, поэтому он их и снимает сам.
Для Z80 на машкодовых функциях эффективнее Паскаль-модель, почему - я уже говорил. На Си-функциях вообще неэффективно работать с параметрами, но лучше не придумали. Наверно всё же сишная модель маленько предпочтительнее, ибо не нужно снимать параметры (через адрес возврата, который лежит первее их), а сделать это можно только после завершения рабочего тела, в конце функции.
Ну да.
SfS, извини за ликбез, раз тебе это не надо, умолкаю. Не знал, что эти упыри набегут.





Ответить с цитированием