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

...
Google Search
Forth-FAQ Spy Grafic

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




Ответить
Имя пользователя:
Заголовок:
Текст сообщения:
Введите текст вашего сообщения. Длина сообщения в символах не более: 60000

Размер шрифта:
Цвет шрифта
Настройки:
BBCode ВКЛЮЧЕН
[img] ВЫКЛЮЧЕН
[flash] ВЫКЛЮЧЕН
[url] ВКЛЮЧЕН
Смайлики ВЫКЛЮЧЕНЫ
Отключить в этом сообщении BBCode
Не преобразовывать адреса URL в ссылки
Вопрос
Теперь гостю придется вводить здесь пароль. Не от своей учетной записи, а ПАРОЛЬ ДЛЯ ГОСТЯ, получить который можно после регистрации на форуме через ЛС.:
Этот вопрос предназначен для выявления и предотвращения автоматических регистраций.
   

Обзор темы - amForth v3.4 использование массивов
Автор Сообщение
  Заголовок сообщения:   Ответить с цитатой
Гость писал(а):
но в Amr-Forth, наверное, инциализация variable переменной
сразу делается

Инициализация variable переменной в данном случае не нужна, так как значение самой переменной
не требуется, нужен только ее адрес, как начальный адрес определяемого массива.
Сообщение Добавлено: Вт авг 25, 2009 09:42
  Заголовок сообщения:  Re: amForth v3.4 использование массивов  Ответить с цитатой
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 переменной
сразу делается:)
Сообщение Добавлено: Пн авг 24, 2009 22:04
  Заголовок сообщения:   Ответить с цитатой
chess писал(а):
i пропустил
Код:
: getCmd 10 0 do i cmd@ . loop ;

бли-и-и-н! Спасибо, постоянно какие-то мелочи, которые сам я никогда не вижу...
Сообщение Добавлено: Пн авг 24, 2009 18:14
  Заголовок сообщения:   Ответить с цитатой
i пропустил
Код:
: getCmd 10 0 do i cmd@ . loop ;
Сообщение Добавлено: Пн авг 24, 2009 15:53
  Заголовок сообщения:  amForth v3.4 использование массивов  Ответить с цитатой
Всем привет!

Очередная проблема: как работать с массивами? В Хоуту написано:
Код:
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 14:43

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


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