Forth http://fforum.winglion.ru/ |
|
amForth v3.4 использование массивов http://fforum.winglion.ru/viewtopic.php?f=39&t=2249 |
Страница 1 из 1 |
Автор: | iv_ru [ Пн авг 24, 2009 14:43 ] |
Заголовок сообщения: | 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 система виснет!
Где собака порылась? |
Автор: | chess [ Пн авг 24, 2009 15:53 ] |
Заголовок сообщения: | |
i пропустил Код: : getCmd 10 0 do i cmd@ . loop ;
|
Автор: | iv_ru [ Пн авг 24, 2009 18:14 ] |
Заголовок сообщения: | |
chess писал(а): i пропустил
Код: : getCmd 10 0 do i cmd@ . loop ; бли-и-и-н! Спасибо, постоянно какие-то мелочи, которые сам я никогда не вижу... |
Автор: | Гость [ Пн авг 24, 2009 22:04 ] |
Заголовок сообщения: | 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 переменной сразу делается:) |
Автор: | chess [ Вт авг 25, 2009 09:42 ] |
Заголовок сообщения: | |
Гость писал(а): но в Amr-Forth, наверное, инциализация variable переменной
сразу делается Инициализация variable переменной в данном случае не нужна, так как значение самой переменной не требуется, нужен только ее адрес, как начальный адрес определяемого массива. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |