У меня тоже наступает. HL и A. Просто нужно иметь соглашение,Сообщение от Sinus
что через эти регистры ничего не передаётся при вызове нелокальных
функций. Через HL может только адрес объекта и/или таблицы
виртуальных функций передаваться. Через A -- номер функции.
Насколько я знаю, это подход принесённый (и в дос в т.ч.)Сообщение от Sinus
ещё из CP/M. (ld c, функция; call #0005). Почему -- понятно.
Загруженный код программы может без всяких хитростей
быть сразу запущен.
В современных операционных системах тоже так. Встроенные функции ОС (например linux или bsd -- как там в windows NT понять сложно, но вроде как тоже примерно так) вызываются аналогичным образом. Например, функции open или read (к языку C прилагаются функии-обёртки распределяющие аргументы по разным регистрам процессора и вызывающие программное прерывание).
Встроенных функций ОС очень мало. У того же линуха порядка
200-300 штук. Другое дело -- библиотечные функции. Их много. Они могут быть загружены или могут не быть загружены. В современных ОС используется подход близкий к указанному мною. Любая функция доступна по её адресу. Но перед тем как какая функция может быть
использована требуется загрузка библиотеки и настройка программы и библиотеки на совместное использование.




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