Выделение памяти из кучи или из стека?
Я прочитал это, В 8085
начальный адрес процессора 00000H
, Где как, в 8086
начальный адрес процессора FFFF0H
,
Теперь я также узнал, что верхняя часть памяти heap
пока внизу лежит stack
, Что меня сейчас смущает, так это то, что в 8085 память выделяется из стека, а в 8086 - из кучи?
Пожалуйста, помогите мне очистить концепцию. Спасибо
2 ответа
Распределение кучи - это концепция более высокого уровня (C, Java и т. Д.), Чем на языке ассемблера, такого нет в сборке 808x. Вы не "выделяете" память.
С другой стороны, стек является нативной концепцией 808x, а также бесчисленных микропроцессоров (и виртуальных машин), он используется каждый раз, когда вы используете, например, "CALL" (ПК помещается в стек). Когда вы RET, адрес возврата ПК извлекается из стека. И вы можете помещать регистры / данные в стек.
Для обсуждения того, почему начальный адрес 8085 0000H
(это четыре нуля, а не пять, поскольку процессор поддерживает только 16-битные адреса).
Что касается расположения стека: путем изменения SP
Вы можете переместить стек туда, куда хотите, но, поскольку он растет вниз, просто имеет смысл переместить его в самый конец адресного пространства.