LINUX.ORG.RU

FORH


0

0

пару вопросов по форту :) Стоит ли учить сейчас Форт? вникать и использовать его? :)

2. пишет ли кто-то еще на этом языке сейчас? :)

3. Насколько и чем отличаются стандарты форта? :)

4. Возможно ли на форте написать большой проект? :)

5. Возможно при программировании на форте вставлять ассемблерные вставки? :)

6. Возможно ли обращаться к переменным в памяти? не к тем, которые локальные в стеке.

7. на АСМе можно полностью контролировать программу и т.д. на ФОрте тоже? насколько я понял, форт это как переносимый асм. или я неправильно понял? :)

:)

anonymous
Ответ на: комментарий от koTuk

>А повашему сколько ? У каждой задачи свой стек

Вопрос стоит о нескольких стеках в рамках одной задачи. Или ты предложишь Форту или Яве за параметрами в другой контекст каждый раз переключаться? :D

KRoN73 ★★★★★
()
Ответ на: комментарий от koTuk

у системы команд тех процессоров было нехилое преимущество: ортогональность. Сейчас на современном x86 из 8 регистров общего назначения что-то уходит на спец. регистры для спец. команд, что-то на стек/фрейм, что-то на параметры для API -- и получается что остаётся всего 4 свободных регистра. У x86_64, конечно получше, но ненамного.

Да, я знаю о переименовании регистров, и о том что реальных физических в процессоре больше чем в x86, и о MSR регистрах, в которые можно записать ещё сотню-другую.

Но система команд остаётся той же, неортогональной.

anonymous
()
Ответ на: комментарий от KRoN73

>сравнивать надо бы с теми же 8086, где слив возможностей по системе команд очевиден :)

Как я уже писал для меня очевидно как раз обратное :)

>А сегодня - да хоть с тем же ARM сравни. x86 по сравнению с ним только застрелиться останется :D

Нада заметить что архитектура х86 проявила удивительную живучесть и до сих пор остается наиболее популярной - может ли этим похвастаться ARM даже после портирования на нее всех популярных юникс подобных поделок ? :)

koTuk
()
Ответ на: комментарий от anonymous

>а если на форте писать операционную ситсему то что, у ядра тоже будет два стека? =-O

Да обычно больше. Два - это минимум по стандарту. Стек возврата и стек данных, как в Яве. А так - полезно ещё отдельно стек с плавучкой держать, например, из самых частых применений. Кто-то - стек строк делает. Я, кстати, до сих пор в раздумьях, не сделать ли мне в JBForth2 разделение стека данных на целочисленный стек и Object'ы :) Это может заметно ускорить целочисленку, а то Integer в int имеет оверхед заметный.

KRoN73 ★★★★★
()
Ответ на: комментарий от koTuk

>Как я уже писал для меня очевидно как раз обратное :)

М... А много ты для PDP писал?

>Нада заметить что архитектура х86 проявила удивительную живучесть

И что? Вон, Windows тоже проявляет удивительную живучесть :)

x86 вылез не за счёт своей архитектуры, а вопреки ей. Вылез он из-за открытой архитектуры IBM. Сделали бы открытие не IBM, а PDP - то картина сегодня была бы совсем иной. Но IBM изначально проигрывала архитектурно, поэтому сделали такой широкий жест. И - попали в струю :)

>и до сих пор остается наиболее популярной - может ли этим похвастаться ARM даже после портирования

Гы. Сегодня в мире ARM'ов выпускается намного больше, чем x86. С момента появления этой архитектуры, только по лицензии было выпущено более 2.5млрд процессоров.

KRoN73 ★★★★★
()
Ответ на: комментарий от anonymous

>Да, я знаю о переименовании регистров, и о том что реальных физических в процессоре больше чем в x86, и о MSR регистрах, в которые можно записать ещё сотню-другую.

>Но система команд остаётся той же, неортогональной.

Начиная уже с 80486 ядро - это risc процессор с оберткой для трансляции команд так что то доступно программисту еще ничего не говорит о внутреннем устройстве.

koTuk
()
Ответ на: комментарий от KRoN73

ну что такое фрейм в стеке возвратов, это понятно. Бектрейс можно посмотреть, и continuations сделать.

А что такое фрейм в стеке данных и зачем может понадобиться? Восстановить алгоритм расчета? И какому множеству данных соответствуют continuations в этом стеке? Это замыкания получатся?

anonymous
()
Ответ на: комментарий от KRoN73

>Гы. Сегодня в мире ARM'ов выпускается намного больше, чем x86. С момента появления этой архитектуры, только по лицензии было выпущено более 2.5млрд процессоров.

Гы, а ты посмотри сколько выпущено микроконтроллеров с intel-вским ядром 8051 - может тогда это самая популярная архитектура ? :) Я говорю про настольные компьютеры и серверы.

koTuk
()
Ответ на: комментарий от koTuk

это-то понятно. Но если снаружи доступна "неудобная" система команд, в которой искусственно надо перезагружать регистры там, где в других архитектурах это делать не надо, и транслируется в "налицо ужасную, добрую внутри" последовательность "микроопераций" "на лету"-- что полезного кроме очередного уровня неявности это даёт? встроить очередной xVM прямо в микрокод? :)

anonymous
()
Ответ на: комментарий от anonymous

>ну что такое фрейм в стеке возвратов, это понятно

Нет, стек данных у Форта не имеет ничего общего с фреймами на стеке возвратов.

Фрейм не позволяет динамически, при работе слова, менять глубину стека данных. Что для Форта - обычное дело.

>А что такое фрейм в стеке данных и зачем может понадобиться?

Нет там вообще фреймов на стеке.

Есть стек возвратов. Вызываешь новое слово - текущее состояние текущего слова (т.е. как минимум - IP) пишется на этот стек. Возвращаешься из вызванного - снимаешь со стека и восстанавливаешь состояние.

Есть стек данных. С переходами никак не связан. Любое слово может оперировать с ним как захочет. Может снять сколько угодно параметров, может положить сколько угодно. Может, соответственно, не только "возвращать" переменное число аргументов, но и переменное число аргументов в зависимости от условий.

Например, очень популярное слово ?dup дублирует на стеке данных число, если оно ненулевое и оставляет как есть, если ноль. Обычно используется в паре с if .. then, чтобы не дропать потом ненужный ноль.

KRoN73 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.