Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Вт мар 19, 2024 14:13

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 159 ]  На страницу Пред.  1 ... 7, 8, 9, 10, 11  След.
Автор Сообщение
 Заголовок сообщения: Re: 3-х стековая виртуальная машина. размышления.
СообщениеДобавлено: Чт мар 08, 2018 21:38 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
Hishnik писал(а):
Стек - не решение проблем, характерное для Форта, а вынужденная мера, проистекающая из особенностей грамматики.

И, вот тут, я не согласен категорически.
Кстати, кое-кто, не так уж и давно, делал отдельный стек для хранения счетчиков цикла DO LOOP. (на сколько я помню, и вполне это обосновывал...)

Hishnik писал(а):
mOleg писал(а):
про промежуточную стадию я не понял. где она?

Перекладывание данных на стек адреса, чтобы использовать число как адрес.

это у вас в голове данная стадия промежуточная, а не в самой идее 3х стековой машины.
Посмотрите свой пример и мой вариант решения.
?Где там промежуточная стадия?

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: 3-х стековая виртуальная машина. размышления.
СообщениеДобавлено: Чт мар 08, 2018 21:59 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7958
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
mOleg писал(а):
И, вот тут, я не согласен категорически.

Почему?

Я вижу достаточно логичный путь, проистекающий из регулярной грамматики Форта. Поскольку все элементы языка представляют собой токены, разделенные пробелами, разбор выражений сделать затруднительно. Если идет просто поток чисел, который нужно куда-то девать, то стек - естественное решение. Можно, конечно, договориться, что первое число идет в регистр A, и вплоть до арифметической команды второе число всегда идет в регистр B. Тогда у нас будет машина с регистрами A и B. Ее можно реализовать, но зачем? Стековая вычислительная модель достаточно универсальна.

mOleg писал(а):
Кстати, кое-кто, не так уж и давно, делал отдельный стек для хранения счетчиков цикла DO LOOP. (на сколько я помню, и вполне это обосновывал...)

Циклу нужно текущее значение счетчика и конечное. Их можно хранить и на стеке возвратов, но тогда доступ к стеку возвратов будет зависеть от того, насколько глубоко мы погрузились в циклы. А это уже побочные эффекты. Добавление стека циклов избавляет от них, и при этом не нарушает привычные шаблоны кода, поэтому такой стек и добавлен.

mOleg писал(а):
?Где там промежуточная стадия?

Она элементарно в том, что приходится выбирать между + и A+. Программист должен постоянно на ходу понимать, куда пойдет очередное число, и держать в голове состояние уже двух стеков, при необходимости перемещая со стека данных адреса, которые туда случайно попали.

Вот еще пример нашелся

100 CONSTANT SIZE-X
20 CONSTANT SIZE-Y

CREATE DATA[] SIZE-X SIZE-Y * CELLS ALLOT

SIZE-X 0 DO - тут SIZE-X это данные, потому что задают интервал для счетчика
Y SIZE-X * I + CELLS DATA[] + а тут SIZE-X SIZE-Y участвуют в вычислении адреса, причем I - это вроде бы счетчик, исходно работающий с данными?
LOOP

И вот теперь навскидку - где здесь расставить A?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: 3-х стековая виртуальная машина. размышления.
СообщениеДобавлено: Чт мар 08, 2018 22:17 
Не в сети

Зарегистрирован: Пт янв 06, 2017 14:57
Сообщения: 365
Благодарил (а): 17 раз.
Поблагодарили: 1 раз.
Hishnik писал(а):
Она элементарно в том, что приходится выбирать между + и A+.
В целом мне тоже кажется, что иногда придётся складывать или вычитать (это уж точно) адреса. Например, что мы делаем, когда расчитываем относительный адрес?..
Hishnik писал(а):
Вот еще пример нашелся...
Что такое Y ?
Тут, вроде как, надо
DATA[] AD+ \ "AD+" как-раз (IMHO) неплохая замена имени "A+", а "A+" и "A-" пусть существуют как сложение и вычитание на стеке адресов


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: 3-х стековая виртуальная машина. размышления.
СообщениеДобавлено: Чт мар 08, 2018 22:25 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7958
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
_KROL писал(а):
Что такое Y ?

В примере двумерный массив. Условно, X, Y - координаты в этом массиве.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: 3-х стековая виртуальная машина. размышления.
СообщениеДобавлено: Чт мар 08, 2018 22:39 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
Hishnik писал(а):
mOleg писал(а):
И, вот тут, я не согласен категорически.
Почему?

потому что, как раз таки, стек - решение.
о чем и пишешь дальше:
Hishnik писал(а):
Если идет просто поток чисел, который нужно куда-то девать, то стек - естественное решение.

т.е. противоречия не у меня в голове 8)
однако, хотелось бы сказать, что форт не запрещает выполнять каждое следующее имя не только на отдельном стеке, но и в отдельной вычислительной системе (на другом процессоре или компьютере).
Можно привести вполне реальный пример, где перемешаны вычисления на стеке данных и на стеке FP.
Еще раз повторюсь, что введение дополнительного стека для еще одного типа данных в форте вполне тривиально и естественно, более того, я считаю, что если завязываешься в узел со стеком данных, надо выделять еще один стек с подходящим типом данных.

Hishnik писал(а):
Циклу нужно текущее значение счетчика и конечное.

а, ведь, я и не спорю. Я лишь напоминаю пример естественного и тривиального решения.

Hishnik писал(а):
mOleg писал(а):
?Где там промежуточная стадия?
Она элементарно в том, что приходится выбирать между + и A+.

это стадия у вас в голове, а не в программе, причем, у меня в голове этой стадии нет, как и в коде.

Hishnik писал(а):
Программист должен постоянно на ходу понимать, куда пойдет очередное число, и держать в голове состояние уже двух стеков, при необходимости перемещая со стека данных адреса, которые туда случайно попали.

блин, не могут, не должны быть адреса на стеке данных. Нет просто механизма переноса между стеками адресов.

Hishnik писал(а):
Вот еще пример нашелся

100 CONSTANT SIZE-X
20 CONSTANT SIZE-Y

CREATE DATA[] SIZE-X SIZE-Y * CELLS ALLOT

SIZE-X 0 DO - тут SIZE-X это данные, потому что задают интервал для счетчика
Y SIZE-X * I + CELLS DATA[] + а тут SIZE-X SIZE-Y участвуют в вычислении адреса, причем I - это вроде бы счетчик, исходно работающий с данными?
LOOP

И вот теперь навскидку - где здесь расставить A?

Y SIZE-X * I + CELLS DATA[] A+
все так же, как и в предыдущем. Просто надо выкинуть из головы, что адреса могут находится на стеке данных.

Это не так сложно.

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: 3-х стековая виртуальная машина. размышления.
СообщениеДобавлено: Чт мар 08, 2018 22:41 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
_KROL писал(а):
Hishnik писал(а):
Она элементарно в том, что приходится выбирать между + и A+.
В целом мне тоже кажется, что иногда придётся складывать или вычитать (это уж точно) адреса.

а вот приведи мне пример, где необходимо складывать два адреса?
вычитать - понятно, а вот складывать или умножать? Ну, допустим, могу допустить деление 8)

А вообще, ничего выдумывать тут и не надо: достаточно взять справочник по какому-нибудь процессору, и посмотреть допустимые режимы адресации. Или вспомнить ту же команду LEA, как работает и что делает.
Тут, ведь, все уже придумано до нас.

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: 3-х стековая виртуальная машина. размышления.
СообщениеДобавлено: Чт мар 08, 2018 23:19 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7958
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
mOleg писал(а):
потому что, как раз таки, стек - решение.

Стек решение не в том смысле, что он удачная находка, вокруг которой построен язык. Бывают ситуации, когда ради алгоритмов или подходов можно терпеть те неудобства, которые есть в языке. Но если выдвинуть лозунг "стек - это удобно, поэтому давайте писать на Форте", то первым же возражением будет "нет, стек - это НЕ удобно". Поэтому ради того, чтобы запустить простой транслятор, можно использовать слегка неудобные вещи и мириться с ними. Стек как раз такая вещь - ради того, чтобы не переусложнять компилятор, программист производит в голове преобразования в постфиксную запись. Но это не означает, что раз мы применили стек, то решение будет эффективным автоматически, и нужно везде побольше стеков.

mOleg писал(а):
Можно привести вполне реальный пример, где перемешаны вычисления на стеке данных и на стеке FP.

У меня целые тонны такого кода :D И это как раз пример того, когда ради сопроцессора миримся со стековой записью, и заодно с отдельным стеком.

mOleg писал(а):
это стадия у вас в голове, а не в программе, причем, у меня в голове этой стадии нет, как и в коде.

Смотрим:
mOleg писал(а):
Y SIZE-X * I + CELLS DATA[] A+


У меня было просто +. Значит, ставя операции, надо задумываться, а не адреса ли мы сейчас вычисляем, и правильно ли лежат компоненты адреса (один должен быть уже на стеке адресов, а другой на стеке данных).

mOleg писал(а):
блин, не могут, не должны быть адреса на стеке данных. Нет просто механизма переноса между стеками адресов.

Ну вот я привел пример - размеры массивов. Куда попадают константы, которые их описывают? Будет специальная "адресная константа"?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: 3-х стековая виртуальная машина. размышления.
СообщениеДобавлено: Чт мар 08, 2018 23:36 
Не в сети

Зарегистрирован: Пт янв 06, 2017 14:57
Сообщения: 365
Благодарил (а): 17 раз.
Поблагодарили: 1 раз.
Hishnik писал(а):
...
Как я понял, вы хотели сказать, что стек удобен зачастую удобен для конечного решения определённой задачи, но не для программиста, который во время процесса решения продумывает, что у него лежит в каждом стеке.

Hishnik писал(а):
mOleg писал(а):
это стадия у вас в голове, а не в программе, причем, у меня в голове этой стадии нет, как и в коде.
Смотрим:
mOleg писал(а):
Y SIZE-X * I + CELLS DATA[] A+

...
Вот поэтому я и предложил ввести другое обозначение, ведь через полгода не каждый так сразу вспомнит, что "A+" это сложить адрес со смещением из стека данных, а "A-" - вычесть из одного адреса другой адрес.

Hishnik писал(а):
mOleg писал(а):
блин, не могут, не должны быть адреса на стеке данных. Нет просто механизма переноса между стеками адресов.
Ну вот я привел пример - размеры массивов. Куда попадают константы, которые их описывают? Будет специальная "адресная константа"?
А почему бы и нет? Вон ALIT где-то видел. Вводить новое, так вводить до конца ;)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: 3-х стековая виртуальная машина. размышления.
СообщениеДобавлено: Пт мар 09, 2018 00:00 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
Hishnik писал(а):
если выдвинуть лозунг "стек - это удобно, поэтому давайте писать на Форте", то первым же возражением будет "нет, стек - это НЕ удобно".

я об этом вообще не говорил.
Бессмысленно спорить со мной на именно эту тему (даже просто общаться).

Hishnik писал(а):
Но это не означает, что раз мы применили стек, то решение будет эффективным автоматически, и нужно везде побольше стеков.

а это чего угодно касается 8)

Hishnik писал(а):
У меня целые тонны такого кода :D И это как раз пример того, когда ради сопроцессора миримся со стековой записью, и заодно с отдельным стеком.

потому и привожу такой пример. Ведь укладывается в голове, что идет на стек данных, а что на FP ?!

Hishnik писал(а):
mOleg писал(а):
это стадия у вас в голове, а не в программе, причем, у меня в голове этой стадии нет, как и в коде.

Смотрим:
mOleg писал(а):
Y SIZE-X * I + CELLS DATA[] A+

У меня было просто +. Значит, ставя операции, надо задумываться, а не адреса ли мы сейчас вычисляем, и правильно ли лежат компоненты адреса (один должен быть уже на стеке адресов, а другой на стеке данных).

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

Hishnik писал(а):
У меня было просто +. Значит, ставя операции, надо задумываться, а не адреса ли мы сейчас вычисляем, и правильно ли лежат компоненты адреса (один должен быть уже на стеке адресов, а другой на стеке данных).

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

Hishnik писал(а):
Ну вот я привел пример - размеры массивов. Куда попадают константы, которые их описывают? Будет специальная "адресная константа"?

причем тут размеры массивов? как они относятся к адресному типу?
уже было два примера (хотя по сути один), где видно хорошо, что происходит со смещениями в памяти.

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: 3-х стековая виртуальная машина. размышления.
СообщениеДобавлено: Пт мар 09, 2018 00:24 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7958
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
_KROL писал(а):
Как я понял, вы хотели сказать, что стек удобен зачастую удобен для конечного решения определённой задачи, но не для программиста, который во время процесса решения продумывает, что у него лежит в каждом стеке.

У Форта постоянно указывают на стек как на недостаток, потому что получается непривычная запись выражений. Однако с точки зрения реализации многое достаточно удобно программировать. Например, в Си знак + сам по себе ничего вобщем-то не означает. Нужен еще синтаксический анализ, чтобы понять, какой код получится. А для стекового языка + имеет совершенно понятную реализацию - взять два числа со стека, сложить, и поместить результат на стек. Получаются и удобные схемы - например, в стековом процессоре адрес всегда лежит на вершине стека.

Однако имеет место и некий культ вокруг стека. Дескать, это нечто с глубоким смыслом, и если мы начнем использовать стек, то откроются прекрасные далеко идущие перспективы. А это не так. Что хорошо в Форте - многие вещи уже проработаны для стековой реализации. Но тащить все на стек ради непонятной мистики не стоит.

_KROL писал(а):
А почему бы и нет? Вон ALIT где-то видел. Вводить новое, так вводить до конца

Я уже показывал это, довольно давно. Сделать отдельный стек для адресов - это не проблема. Проблема больше в дальнейшем использовании - в каких именно случаях числа кладутся на этот стек? Например, VARIABLE должна класть число на стек адреса. А вот CONSTANT? Я выше привел пример того, как константы используются для вычисления адреса. Например, мы имеем карту, которая представлена двумерным массивом. Координаты объекта X, Y - это ведь данные. Но на их основе надо вычислить адрес ячейки в массиве карты, чтобы понять, что там находится. Поэтому пока на такой модели с отдельным стеком адреса не будет написано достаточно кода, будет непонятно, насколько это рабочее. Причем писать код надо с целью "сломать", а не показать работающие примеры. Такой подход лежит достаточно глубоко в научной методологии - вопрос не в том, как мы доказываем, а какими способами мы пытались опровергнуть гипотезу (и это не получилось). Чем больше вот таких примеров, когда мы подсовывали новому методу интересные задачки, а он справлялся, тем ценнее метод.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: 3-х стековая виртуальная машина. размышления.
СообщениеДобавлено: Пт мар 09, 2018 00:35 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7958
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
mOleg писал(а):
потому и привожу такой пример. Ведь укладывается в голове, что идет на стек данных, а что на FP ?!

Но это именно из-за возможностей x87. И код в целом приходит к стилю "сначала все, что нужно, на стек с плавающей точкой, потом считаем, потом при необходимости обратно на целочисленный стек". Смесь кода неудобно отлаживать.
mOleg писал(а):
это похоже просто на блок в голове 8(
тут нет стены, тут нет сложностей (если их не придумывать)
ну, попробуй сам хотя бы с десяток вариантов перебрать так и сяк.
я, ведь, тоже не сразу это понял, что все достаточно гладко выходит, и преимущества таки есть,
и тема о трехстековой машине тут на форуме была поднята не мной (уж и не помню кем) и я был сначала тоже очень против.
Даже набросок системы сделал, чтобы понять, что так а что нет.

Ну, могу только напомнить, что я вообще-то такой стек уже делал для Кварка и показывал примеры. :D Так что аргумент "зелен виноград" тут не пройдет. Есть бритва Оккама, которая как раз для таких ситуаций и была придумана еще в незапамятные времена, а именно когда в богословии стали придумывать вещи на уровне "а еще вот так можно, поэтому давайте так и считать". Сейчас-то попроще, потому что можно тут же проверить - ну так и надо проверить. Но аргумент "почему бы не так" проверяется как раз бритвой Оккама - если можно без этого, значит рано или поздно оно само и отвалится. Просто когда кто-то напишет Форт, отложит стек адресов на потом, и по ходу дела обнаружит, что и так вобщем-то все работает.

mOleg писал(а):
причем тут размеры массивов? как они относятся к адресному типу?

Ну вот я привожу пример. X, Y - это данные, но выражение Y*sizeX + X - это смещение в массиве, т.е. адрес. Так что достаточно пробежаться глазами по коду на Си и посмотреть, сколько там выражений в квадратных скобках - вот как раз вычисление адреса. Всегда ли там внутри литералы? Как вообще разделить литералы-данные и литералы-адреса? Вот поэтому и вопросы к новому предложению всегда лежат в плоскости "а давайте это попробуем сломать, а потом посмотрим на список неудачных попыток - чем он больше, тем лучше предложение".


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: 3-х стековая виртуальная машина. размышления.
СообщениеДобавлено: Пт мар 09, 2018 00:49 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
Hishnik писал(а):
mOleg писал(а):
причем тут размеры массивов? как они относятся к адресному типу?

Ну вот я привожу пример. X, Y - это данные, но выражение Y*sizeX + X - это смещение в массиве, т.е. адрес.

нет. смещение - это смещение. Адрес- это адрес. Адрес появляется, когда ты смещение добавляешь к базе, а это и есть A+

Hishnik писал(а):
Как вообще разделить литералы-данные и литералы-адреса?

а вот примеры литералов-адресов "в студию" можно предоставить?

с Variable сложнее, в него адреса сохранять и данные не получится,
придется вводить какой-нибудь Pointer , что не так уж и плохо, а Variable оставлять для данных.
Интереснее, как реализовать помещение адреса, представленного в текстовом виде на стек адресов?
Можно типа: 0xFECBDA Nil A+ т.е. как смещение от нулевого указателя, а можно и так: '0x12ED45

И, не то, чтоб я не видел проблем, просто они достаточно легко преодолимы.

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: 3-х стековая виртуальная машина. размышления.
СообщениеДобавлено: Пт мар 09, 2018 01:12 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7958
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
mOleg писал(а):
нет. смещение - это смещение. Адрес- это адрес. Адрес появляется, когда ты смещение добавляешь к базе, а это и есть A+

Ну терминологически это "составляющая адреса", и это непринципиально. Важнее то, что слово-то другое - A+. А это уже делает код несовместимым.

mOleg писал(а):
а вот примеры литералов-адресов "в студию" можно предоставить?

Вот только что. Вот у меня размер карты в константе. С одной стороны, надо с помощью этой константы вычислять смещения, т.е. делать потом A+ вместо +. С другой - это чистые данные, потому что надо проверять координату и прочее.

mOleg писал(а):
И, не то, чтоб я не видел проблем, просто они достаточно легко преодолимы.

Так вот это как раз к Оккаму вопрос. Точнее, от него тут ответ :) Есть много вариантов реализации самых разных вещей. Стек циклов, к слову, не меняет в коде ничего - все основные шаблоны остаются теми же. Стек адресов меняет исходные тексты, так что надо выбирать серьезно.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: 3-х стековая виртуальная машина. размышления.
СообщениеДобавлено: Пт мар 09, 2018 12:29 
Не в сети

Зарегистрирован: Пт янв 06, 2017 14:57
Сообщения: 365
Благодарил (а): 17 раз.
Поблагодарили: 1 раз.
Hishnik писал(а):
mOleg писал(а):
нет. смещение - это смещение. Адрес- это адрес. Адрес появляется, когда ты смещение добавляешь к базе, а это и есть A+

Ну терминологически это "составляющая адреса", и это непринципиально. Важнее то, что слово-то другое - A+. А это уже делает код несовместимым.
Олег, если тебя смущает AD+ (видишь как суммму адреса и двойной ячейки), то вот ещё варианты: A+D A:D
Последний вроде точно по смыслу подходит.

Hishnik писал(а):
mOleg писал(а):
а вот примеры литералов-адресов "в студию" можно предоставить?

Вот только что. Вот у меня размер карты в константе. С одной стороны, надо с помощью этой константы вычислять смещения, т.е. делать потом A+ вместо +. С другой - это чистые данные, потому что надо проверять координату и прочее.

Не вижу проблемы
Код:
: VARIABLE ( -- \\ -- a:addr ) CREATE 0 , DOES> ;
: CONSTANT ( d: x -- \\ -- d: x) CREATE , DOES> @ ;


Hishnik писал(а):
mOleg писал(а):
И, не то, чтоб я не видел проблем, просто они достаточно легко преодолимы.

Так вот это как раз к Оккаму вопрос. Точнее, от него тут ответ :) Есть много вариантов реализации самых разных вещей. Стек циклов, к слову, не меняет в коде ничего - все основные шаблоны остаются теми же. Стек адресов меняет исходные тексты, так что надо выбирать серьезно.
Я как-то не понимаю, в чём сложность держать два стека в голове? Не привычно? Да.

P.s. Как я понял, вы все просто хотите оживить форум? :D


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: 3-х стековая виртуальная машина. размышления.
СообщениеДобавлено: Пт мар 09, 2018 13:57 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
Hishnik писал(а):
mOleg писал(а):
нет. смещение - это смещение. Адрес- это адрес. Адрес появляется, когда ты смещение добавляешь к базе, а это и есть A+

Ну терминологически это "составляющая адреса", и это непринципиально. Важнее то, что слово-то другое - A+. А это уже делает код несовместимым.

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

Hishnik писал(а):
mOleg писал(а):
а вот примеры литералов-адресов "в студию" можно предоставить?

Вот только что. Вот у меня размер карты в константе. С одной стороны, надо с помощью этой константы вычислять смещения, т.е. делать потом A+ вместо +. С другой - это чистые данные, потому что надо проверять координату и прочее.

нет, размер - это размер.
пример не засчитан 8(

в конце концов, ты ведь не путаешься, где надо писать ! , а где +
а, ведь тоже надо разделять, где адрес лежит в первом случае.

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 159 ]  На страницу Пред.  1 ... 7, 8, 9, 10, 11  След.

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB