При использовании больших массивов было бы неплохо настроить массив на определенное количество байтов на число. В основном я хочу, чтобы быстрые подпрограммы читали такие отрегулированные многобайтовые числа для синглов в стеке и, наоборот, сохраняли синглы в массиве, настроенные на определенное количество байтов. В 64-битной системе есть потребность в других одиночных массивах чисел, чем один байт (c @ c!) И восемь байтов (@!).Многобайтовый магазин и выборка в Forth - как реализовать?
Так как реализовать
[email protected] (ad b -- n)
cs! (n ad b --)
где Ь число байтов. Слово cs! кажется, работает, как
: cs! (n ad b --) >r [email protected] cell+ swap r> cmove drop ;
, но как о CS @ и как сделать это в чистом ANS Forth без SP @ или подобных слов?
Обратите внимание, что 'CS' означает операции с потоком Control-Flow Stack, такие как 'cs-roll' и т. Д., См. [Дополнительный набор инструментов для программирующих инструментов] (http://www.forth200x.org/documents/html/tools .html). Поэтому использование суффикса 'cs' для другой семантики может запутать. – ruvim
Да, это было знакомо, но я об этом не думал. Лучше имена, возможно, mb @ и mb! – Lehs
Должно ли выражение 'addr @' давать тот же результат, что и 'addr 8 mb @', если размер ячейки равен 64 бит? Я имею в виду, что 'cmove' может привести к разному результату в таком случае. Также обратите внимание, что в общем случае порядок байтов может отличаться в памяти и в стеке. – ruvim