ПО, ЭВМ и АСУ из Таможенного Союза

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » ПО, ЭВМ и АСУ из Таможенного Союза » Проект "Виртуальные машины" » Что если в регистре стека хранить число использованных байтов?


Что если в регистре стека хранить число использованных байтов?

Сообщений 1 страница 2 из 2

1

А адрес вершины стека вычислять аппаратно
- либо при работе со стеком
- либо при загрузке его в регистр при помощи специальной команды (типа LEA, но другой).

Быстродействие схемы это не снизит, потому что арифметические операции выполняются в пределах того же такта,
зато стек логически всегда будет действовать одинаково (положили в стек - значение равное числу элементов (байтов) в стеке увеличилось, сняли - уменьшилось), независимо от того, куда изменяются адреса (от того, куда растёт стек).

Хотя, конечно, дополнительные логические элементы потребуются, а там бюджет на них..
Быстродействие не снизит, но энергопотребление и общий вес изделия повысит. А вес это важно при полётах в на орбиту и вообще.

Жаль, такая идея пропала...

0

2

1) вс +=1;  // стек растет в сторону меньших адресов

2) +1 это "растёт"? НЕТ, это уменьшается! но как так, если плюс, это не минус?

3) Обрабатывается команда извлечения из стека.
Количество занятых ячеек стека УМЕНЬШАЕТСЯ.
При этом адрес вершины стека УВЕЛИЧИВАЕТСЯ.
Увеличивается он потому, что стек растет в сторону меньших адресов.
Тут как комментарий не напиши, все равно кому-то будет непонятно.

Неужели нельзя так написать, чтобы было понятно? Надо подумать.

Почему непонятна первая строчка?
Потому что (глядя на неё в отдельности) непонятно, что такое "вс" и что такое "стек".
Как разъяснил Евгений ниже, под словом "стек" можно понять:
а) количество занятых ячеек;
б) адрес вершины.
Нетрудно заметить, что:
- действительно есть неоднозначность, мешающая пониманию (неоднозначность присутствует, а не отсутствует);
- действительно есть неоднозначность, мешающая пониманию  (это неоднозначность, у недоопределённого слова два значения);
- действительно есть неоднозначность, мешающая пониманию (действительно мешает пониманию).

Можно ли было написать комментарий по-другому?

// "вс" это адрес вершины стека, он увеличивается при уменьшении количества элементов стека

можно ли было написать комментарий более кратко (менее развёрнуто), не теряя смысл?
Для этого можно попробовать использовать антоним слову "растёт". Допустим "укорачивается".

// "вс" - адрес вершины стека увеличивается, когда стек укорачивается

Стало хуже, появилось новое непонятное слово.
Кроме того, это просто по русски написано то же самое, что в инструкции слева, масло масляное,
только "вс" расшифровано и действие записано (стек укорачивается), но это и так видно выше.
То есть такой комментарий не сильно добавляет понимания.

// стек укорачивается вверх
// стек растёт вниз

Вторая фраза заранее известна программисту из учебного курса, она сразу активирует ассоциации.
А первая фраза редкая и её значение сходу непонятно.

И такая ассоциация не только у меня в голове, но и у Евгения, ведь он написал
вс +=1;  // стек растет в сторону меньших адресов
а не
вс +=1;  // стек укорачивается в сторону бо́льших адресов

// удаление элемента, действие обратное фразе "стек растёт вниз"

Слово вниз врывается в сознание первым (Штирлиц знал, что запоминается последняя фраза).

Писать в каждом месте текста длинные комментарии неудобно (комментарии заполоняют код).

Но и заменять на отсылки - тоже плохо. Например
// смотри справочную статью по теме "как работает стек"
тут и помощи никакой нет, и текст программы визуально увеличивается/усложняется.

Про то, что "вниз" и "вверх" это не для осминогов, и в космосе не работает, я уже писа́л.
Да и слово "расти" неудобное, потому что это как бы в одну сторону, антонима к нему нет (хиреть? отмирает/нарастает?).
А слово "удлинняется" длиннее, а значит неудобнее.

нарастает/отмирает, удлинняется/укорачивается. Как сказать это применительно к дискретным количествам, а не к непрерывным длинам?
Отвечает ChatGPT: можно использовать "увеличивается количество"/"уменьшается количество" [элементов].

Можно ли выучить нового программиста так, чтобы не использовалось слово "вниз"? Наверное да, только на себе это уже никак не прочувствовать... Поэтому надо считать количество запоминаемых абстракций по разным учебным программам, чтобы выбрать ту, где их меньше (при прочих равных).
(разница может быть в одну-две единицы и казаться незначительной, но миллионы программистов, помноженные на сотни и тысячи будущих лет - вот и экономия времени).

вс +=1; // стек растет в сторону меньших адресов
вс +=1; // адрес вершины стека увеличивается (количество элементов стека уменьшается)
вс +=1; // стек, адрес вершины увеличивается (и этим уменьшается количество элементов)

Никак не получается так же кратко, но более понятно. Нужны новые абстракции, соответствующие им слова и переучивание всех уже живущих  программистов (для этого нужна долговре́менная стратегическая программа уровня министерства или совета по языку при правительстве).

Отредактировано Лис (2023-04-20 05:31:12)

0


Вы здесь » ПО, ЭВМ и АСУ из Таможенного Союза » Проект "Виртуальные машины" » Что если в регистре стека хранить число использованных байтов?