Предпочтительный стек вызовов на уровне ЦП зависит от архитектуры. Исторически, у CPU были инструкции, поддерживающие стеки, которые растут до более низких или более высоких адресов памяти, и содержимое стеков менялось в зависимости от архитектуры и языка программирования.
Язык программирования, который компилируется в машинный кодвероятно, будет использовать поддерживаемый процессором стек вызовов. Но любой язык программирования может выбирать, какой стек использовать, как его использовать, что размещать там, и даже какой контекст отвечает за извлечение из стека ( «соглашение о вызовах» ).
Статья в Википедии для "Стек вызовов" объясняет, что содержится в большинстве стеков вызовов и как они используются.
Операционные системы будут адаптироваться к архитектуре ЦП - язык программирования, на котором они написаны (C
распространен, но были и другие). Части ОС, написанные на ассемблере, вероятно, будут использовать соглашения архитектуры.