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

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: amForth v3.4 использование массивов
СообщениеДобавлено: Пн авг 24, 2009 14:43 
Не в сети

Зарегистрирован: Ср май 13, 2009 18:35
Сообщения: 35
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Всем привет!

Очередная проблема: как работать с массивами? В Хоуту написано:
Код:
variable my-array  42 cells allot

This makes the dictionary entry named my-array, sets up the link to the RAM address and allocates an additional amount of 42 cells in RAM.
The use of the array is quite simple:
Код:
  : my-array-@ cells my-array + @ ;
  : my-array-! cells my-array + ! ;

Предположим мне нужен массив из 16 элементов:
Код:
variable cmd 20 cells allot
: cmd@ cells cmd + @ ;
: cmd! cells cmd + ! ;

И как мне теперь запистаь/просмотреть содержимое массива? Хотелось бы иметь массив 0,1,...F
Код:
: setCmd 10 0 do i cmd! loop ;
: getCmd 10 0 do cmd@ . loop ;

далее заливаем на стэк 16 элементов и вызываем setCmd:
Код:
f e d c b a 9 8 7 6 5 4 3 2 1 0 setCmd

на стэке не остаётся ни одного из 16 элемента (перемещены в массив?)
попробуем посмотреть на массив:
Код:
getCmd

и получаю:
Код:
2 4 6 8 A C D 5C5C 0 0 0 F 0 0 E 2121

при повторном вызове
Код:
getCmd
система виснет!
Где собака порылась?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн авг 24, 2009 15:53 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2107
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 34 раз.
i пропустил
Код:
: getCmd 10 0 do i cmd@ . loop ;

_________________
С уважением, chess


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн авг 24, 2009 18:14 
Не в сети

Зарегистрирован: Ср май 13, 2009 18:35
Сообщения: 35
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
chess писал(а):
i пропустил
Код:
: getCmd 10 0 do i cmd@ . loop ;

бли-и-и-н! Спасибо, постоянно какие-то мелочи, которые сам я никогда не вижу...


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: amForth v3.4 использование массивов
СообщениеДобавлено: Пн авг 24, 2009 22:04 
iv_ru писал(а):
написано:
Код:
variable my-array  42 cells allot



Правильнее в Форте
Код:
  create my-array 42 cells allot

или c инициализацией
Код:
variable my-array
          here my-array !
          42 cells allot

но в Amr-Forth, наверное, инциализация variable переменной
сразу делается:)


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт авг 25, 2009 09:42 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2107
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 34 раз.
Гость писал(а):
но в Amr-Forth, наверное, инциализация variable переменной
сразу делается

Инициализация variable переменной в данном случае не нужна, так как значение самой переменной
не требуется, нужен только ее адрес, как начальный адрес определяемого массива.

_________________
С уважением, chess


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

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


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

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


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

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