Вопрос по Хамахеру
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
RE: Вопрос по Хамахеру - 2009-05-31 01:27:10.400000
|
|
|
rgo
Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
|
Вероятно у него всё-таки правильно. У него стек растёт вниз. Я не буду утверждать что так оно на всех архитектурах, но, скажем, на x86 – именно так.
|
|
|
RE: Вопрос по Хамахеру - 2009-05-31 11:28:06.013333
|
|
|
nokiauser
Сообщений: 3
Оценки: 0
Присоединился: 2009-05-30 19:04:27.553333
|
Не мог бы ты ответь подробнее? Он пишет, что стек заполняется начиная с адреса 2000 и до 1500
|
|
|
RE: Вопрос по Хамахеру - 2009-05-31 13:27:39.186666
|
|
|
rgo
Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
|
А что непонятно? Первое значение, которое мы push, кладётся в конец памяти стека, то есть оно имеет наибольший адрес. А указатель стека при этом уменьшается. Ну да. Если почитать внимательнее тот псевдокод который он использует, так и есть. Когда происходит push указатель уменьшается. Когда pop – наоборот указатель увеличивается. 1500 SP 2000
-------empty--------++top======== Вот такая примерно картинка. `=' – это заполненная часть стека, `top' – элемент который лежит на вершине, `++' – место куда указывает SP, `-' – свободное место в стеке.
|
|
|
RE: Вопрос по Хамахеру - 2009-05-31 17:19:09.603333
|
|
|
nokiauser
Сообщений: 3
Оценки: 0
Присоединился: 2009-05-30 19:04:27.553333
|
Это понятно, вопрос мой совсем в другом, он касается проверки на пустоту и заполненность. У него написано( контроль на пустоту при выталкивании ) Compare #2000,SP ( compare выполняет 2000-sp) Branch > 0 EMPTYERROR MOVE (SP)+, NEWITEM Но ведь, если 2000 - SP > 0, значит что sp указывает на меньший адрес и следовательно стек не пуст, а что-то содержит( а у него происходит ошибка пустоты). Поэтому я и высказал мнение,что должно быть Branch < 0, ведь тогда стек пуст. Аналогичная ситуация и с проверкой на заполненность.
|
|
|
|
|