Никогда не задумывался об этом, но стоит признать, что интересный вопрос Предположу, что “входных” регистров много, потому что очень часто функции принимают несколько аргументов. В то время как возвращаемых значений обычно меньше. Получается, что 2 регистра попросту оптимальный вариант, поскольку в большинстве случаев их хватает для фундаментальных типов и каких-то небольших других типов, а если что-то тяжелое, то можно просто другим способом возвращать - то есть как и делают с типами класса MEMORY, поэтому и нужда в большем количестве регистров пропадает.
Спасибо за обратную связь! Соглашусь, что в начале стоило про calling convention подробнее написать - в следующий раз учту. Статью несколько раз переписывал, поскольку то слишком, казалось бы, много информации уточняющей писал, то слишком мало. Пока пытаюсь пристреляться, насколько подробно стоит все разъяснять)
PS Буду писать виртуалки для скриптовых языков. Приглашаю поучаствовать.
Спасибо за приглашение, но, к сожалению, не моя специализация :(
Никогда не задумывался об этом, но стоит признать, что интересный вопрос Предположу, что “входных” регистров много, потому что очень часто функции принимают несколько аргументов. В то время как возвращаемых значений обычно меньше. Получается, что 2 регистра попросту оптимальный вариант, поскольку в большинстве случаев их хватает для фундаментальных типов и каких-то небольших других типов, а если что-то тяжелое, то можно просто другим способом возвращать - то есть как и делают с типами класса
MEMORY, поэтому и нужда в большем количестве регистров пропадает.Спасибо за обратную связь! Соглашусь, что в начале стоило про
calling conventionподробнее написать - в следующий раз учту. Статью несколько раз переписывал, поскольку то слишком, казалось бы, много информации уточняющей писал, то слишком мало. Пока пытаюсь пристреляться, насколько подробно стоит все разъяснять)Спасибо за приглашение, но, к сожалению, не моя специализация :(