rv82 писал(а):
Здравствуйте! Я новичок в форте, поэтому, возможно задам глупые вопросы.
1. В современных Фортах (особенно интересует SPF) адресация ячеек массива двух- или 4-байтная? Пытаюсь дойти опытним путём,
А зачем? SPF4, как и многие современные Форт системы для PC
32-х разрядные. Это обычно описывается в описании.
Если система следует стандарту 94года то в ней должно присутствовать
константа CELL показывающая разрядность ячейки Форт системы.
rv82 писал(а):
но что-то не работает:
Код:
CREATE ar 10 ALLOT
: enter ( -- запись чисел в массив )
9 0 DO
I 1 + 2 * ar I 2* + !
LOOP
;
: view ( -- чтение из массива )
9 0 DO
ar I 2* + @ . CR
LOOP
;
Подскажите пожалуйста, в чём ошибка?
Смотря, что требовалось view у Вас считывает 32-х разрядные ячейки
массива с шагом 2
enter помещает I 1+ 2* числа в 32-х разрядные ячейки тоже с шагом 2
Кроме того CREATE ar 10 ALLOT
резервирует 10
байт адресного пространства
правильнее CREATE ar 10 CELL * ALLOT
rv82 писал(а):
2. Переменные VARIABLE и массивы - это указатели. Как освободить память, если эти переменные или массивы стали не нужны в программе?
В общем случае никак т.к. удаление слов из словаря после их компиляции не тривиальная задача. В Форте есть динамическое
выделение памяти ALLOCATE или используйте Хип
P.S.Подобные вопросы задавайте в разделе Форт для начинающих
и попробуйте почитать описание на SPF4 и стандарты по Форт языку:)
[quote="rv82"]Здравствуйте! Я новичок в форте, поэтому, возможно задам глупые вопросы.
1. В современных Фортах (особенно интересует SPF) адресация ячеек массива двух- или 4-байтная? Пытаюсь дойти опытним путём,
[/quote]
А зачем? SPF4, как и многие современные Форт системы для PC
32-х разрядные. Это обычно описывается в описании.
Если система следует стандарту 94года то в ней должно присутствовать
константа CELL показывающая разрядность ячейки Форт системы.
[quote="rv82"]
но что-то не работает:
[code]
CREATE ar 10 ALLOT
: enter ( -- запись чисел в массив )
9 0 DO
I 1 + 2 * ar I 2* + !
LOOP
;
: view ( -- чтение из массива )
9 0 DO
ar I 2* + @ . CR
LOOP
;
[/code]
Подскажите пожалуйста, в чём ошибка?
[/quote]
Смотря, что требовалось view у Вас считывает 32-х разрядные ячейки
массива с шагом 2
enter помещает I 1+ 2* числа в 32-х разрядные ячейки тоже с шагом 2
Кроме того CREATE ar 10 ALLOT
резервирует 10 [b] байт [/b] адресного пространства
правильнее CREATE ar 10 CELL * ALLOT
[quote="rv82"]
2. Переменные VARIABLE и массивы - это указатели. Как освободить память, если эти переменные или массивы стали не нужны в программе?
[/quote]
В общем случае никак т.к. удаление слов из словаря после их компиляции не тривиальная задача. В Форте есть динамическое
выделение памяти ALLOCATE или используйте Хип
P.S.Подобные вопросы задавайте в разделе Форт для начинающих
и попробуйте почитать описание на SPF4 и стандарты по Форт языку:)