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

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 112 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7, 8  След.

Что по-вашему лучше (и почему) ?
С++ 15%  15%  [ 4 ]
Forth 85%  85%  [ 22 ]
Всего голосов : 26
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Вс июл 30, 2006 15:48 
2 вопрос
stdcall - это директива паскаля, подразумевающая работу с функцией подобно С/С++. У С/С++ она получается автоматическая.
В паскале первые аргументы функции заносятся в регистры (экономят стек) а результат в аккумулятор (регистр А) а в С/С++ -- все через стек.


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вс июл 30, 2006 15:55 
Мдя я мог и напутать немного насчет stdcall - может это и паскалевский тип (для него в С есть pascal вообщето), - давно уже не сталкивался. :(


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вс июл 30, 2006 17:02 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
вопрос писал(а):
oleg писал(а):
вопрос писал(а):
Угу, но эти соглашения одни и те же для всех без исключения компиляторов СИ (а их немало!) И узнать их довольно легко. они включены в стандарт. В стандарт Форта входит где находится в-на стека данных и в-на стека возвратов?

Покажи мне, где в стандарте си или си++ указано распределение регистров!
Насчет все без исключения тоже утверждение сомнительное очень.
Какая разница где находится стек возвратов? А где стек данных?


Где в стандарте - не скажу, хотя язык предполагает, НАПРИМЕР, ключевые слова ( stdcall ... ), которые явно входят в какой-то стандарт, возможно не языковой, ну так распространённый.
вот наиболее вразумительная статья из тех, что нашлись быстро
http://www.softmos.com/lyosha/Articles/ ... rrier.html
по крайней мере там есть слова:
"Изложенный ниже материал относится главным образом к «чистому C». Особенности C++ оговорены отдельно. Лично я использую Microsoft Visual C++, однако практически всё нижеизложенное входит в стандарт языка и относится в равной степени ко всем компиляторам: MS Visual, Borland, Watcom, Intel, GNUсному и прочим С. "


Прекрасно, вернемся сначала к поднятому тобой вопросу:
вопрос писал(а):
Вот именно тебе нужно знать, как устроена форт-вм, а при написании программ на СИ + АСС-Р нужно знать ТОЛЬКО Си и Ассемблер и не нужно знать никаких машин или устройства компиляторов (именно это и имею ввиду)

Я так понимаю, что все-таки необходимо знать, как все устроено в том же Си 8)

К тому же стандарт все-таки не предусматривает распределения регистров, уже хотя бы потому, что компилятор си может работать не только на ix86 платформе. И распределение регистров внутри программы скомпилированной на сях тоже дело достаточно интимное 8) То, что при опускании на уровень реализации Форт-ВМ необходимо знать как устроена эта самая ВМ нет ничего необычного или же сложного, особенно, если исходные тексты этой самой ФВМ открыты.

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вс июл 30, 2006 17:21 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
Да, к тому же я замечу, что форт передает параметры гораздо быстрее и прозрачнее за счет того, что разделяет стеки для хранения и передачи данных и для сохранения адресов возврата из процедур. И вообще можно провести некоторые параллели между тем, что делают "классические" типовые языки Бейсик, Си, Паскаль, Фортран с тем что делает форт.

Си и ему подобные перед входом в функцию выделяют на стеке {данных\возвратов} место под данные, при необходимости проводят инициализацию данных, в зарезервированной области, выкладывают адрес возвратов на вершину стека, и входят в функцию -- при выходе эта память освобождается( вызывающей или вызываемой) функцией. Конечно, это происходит автоматически, но это приходится знать, особенно, если ты хочешь писать на ассемблере. А форт ничего этого не делает, то есть он только сохраняет на стеке возвратов адрес, на который нужно перейти при выходе из слова ( и все ) А вот инициализация данных, подготовка и последующее удаление этих данных перекладывается на программиста. Поэтому и существуют эти самые dup drop и им подобные 8)

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн июл 31, 2006 06:44 
вопрос писал(а):
Вот именно тебе нужно знать, как устроена форт-вм, а при написании программ на СИ + АСС-Р нужно знать ТОЛЬКО Си и Ассемблер и не нужно знать никаких машин или устройства компиляторов (именно это и имею ввиду)


При написании на С для управляющих систем, зачастую, еще приходится
пристыковывать операционную среду к языку:)


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн июл 31, 2006 06:50 
oleg писал(а):
вопрос писал(а):
В СИ есть стандарт. Я, к сожалению его плохо помню (придётся теперь вспомнить, если стану с Фортом линковать)

Стандарт не определяет того каким образом будут передаваться данные через функции, какие регистры при этом и как использовать. Так что нужно для этого смотреть в реализацию данного компилятора.


Еще можно добавить несовместимость реализаций рунтайм объектных
моделей С++ разных производителей. DLL код от Борланд не будет работать
с С++ от МS. ( уже с этим сталкивался )


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн июл 31, 2006 06:58 
oleg писал(а):
К тому же стандарт все-таки не предусматривает распределения регистров, уже хотя бы потому, что компилятор си может работать не только на ix86 платформе. И распределение регистров внутри программы скомпилированной на сях тоже дело достаточно интимное 8) То, что при опускании на уровень реализации Форт-ВМ необходимо знать как устроена эта самая ВМ нет ничего необычного или же сложного, особенно, если исходные тексты этой самой ФВМ открыты.


Встретился со стандартом введенным Филипс для ARM процессоров когда
при передаче параметров регистры c 0...3 отведены под них, а остальные
параметры передаются через стек. Регистры с 4...11 отведены под локальные
переменные и при необходимости должны сохраняться. r12 отведен под
связующую информацию.


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн июл 31, 2006 11:29 
Вот вам еще статейка по теме: http://www.inventio.co.uk/forthvsc.htm


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн июл 31, 2006 11:48 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
oleg писал(а):

Прекрасно, вернемся сначала к поднятому тобой вопросу:
вопрос писал(а):
Вот именно тебе нужно знать, как устроена форт-вм, а при написании программ на СИ + АСС-Р нужно знать ТОЛЬКО Си и Ассемблер и не нужно знать никаких машин или устройства компиляторов (именно это и имею ввиду)

Я так понимаю, что все-таки необходимо знать, как все устроено в том же Си 8)

К тому же стандарт все-таки не предусматривает распределения регистров, уже хотя бы потому, что компилятор си может работать не только на ix86 платформе. И распределение регистров внутри программы скомпилированной на сях тоже дело достаточно интимное 8) То, что при опускании на уровень реализации Форт-ВМ необходимо знать как устроена эта самая ВМ нет ничего необычного или же сложного, особенно, если исходные тексты этой самой ФВМ открыты.

Тем не менее, некое соглашение ЕСТЬ, в то время как в Форте нет, т.е. в тстандартных случаях я не буду особенно сомневаться


Последний раз редактировалось вопрос Пн июл 31, 2006 12:01, всего редактировалось 1 раз.

Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн июл 31, 2006 11:53 
Не в сети

Зарегистрирован: Чт май 04, 2006 22:43
Сообщения: 78
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
http://colorforth.com/1percent.html Все читали?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн июл 31, 2006 12:06 
Не в сети

Зарегистрирован: Ср май 03, 2006 11:27
Сообщения: 1394
Откуда: St.Petersburg
Благодарил (а): 2 раз.
Поблагодарили: 11 раз.
вопрос писал(а):
Тем не менее, некое соглашение ЕСТЬ, в то время как в Форте нет


Единообразие в Форте может быть обусловлено целесообразностью
и заимстовованием исходных текстов. Лично я стараюсь придерживаться
стандарта де-факто и других призываю. Для вызово примитива с другой
дисциплиной использования регистров достаточно вызов или тело примитива обложить
адаптирующими макросами.


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

Зарегистрирован: Чт июл 13, 2006 15:57
Сообщения: 50
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Форт всегда выигрывает в задачах прототипирования, где количество структур данных не так уж и велико - в противном случае надо реализовать системный уровень (структуры, массивы), а потом уж программить

если лень и тебе надо общаться в команде с другими программистами (часто не разделяющими твои восторги по поводу Форта) - С++

Кроме того, применение шаблонов, наследования и полиморфизма в С++ позволяют сокрыть катавасию с разнообразными структурами данных и улучшить читабельность кода

_________________
Форт - гнусный язык программирования


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

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
Цитата:
Для вызово примитива с другой
дисциплиной использования регистров достаточно вызов или тело примитива обложить
адаптирующими макросами.

Не все так хорошо всё понимают...


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт авг 01, 2006 03:06 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
вопрос писал(а):
Я так понимаю, что все-таки необходимо знать, как все устроено в том же Си

К тому же стандарт все-таки не предусматривает распределения регистров, уже хотя бы потому, что компилятор си может работать не только на ix86 платформе. И распределение регистров внутри программы скомпилированной на сях тоже дело достаточно интимное То, что при опускании на уровень реализации Форт-ВМ необходимо знать как устроена эта самая ВМ нет ничего необычного или же сложного, особенно, если исходные тексты этой самой ФВМ открыты.

Тем не менее, некое соглашение ЕСТЬ, в то время как в Форте нет, т.е. в тстандартных случаях я не буду особенно сомневаться

Нельзя форт сравнивать с Си напрямую. Сравнивай хотя бы с явой. Будет точнее. Есть ли у явы доступ к ассемблеру того процессора, на котором работает YVM ? Есть ли в тех же ява-эмуляторах от различных фирм одинаковость распределения регистров???

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт авг 01, 2006 12:26 
Не в сети

Зарегистрирован: Чт май 04, 2006 22:43
Сообщения: 78
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Все-таки интересен как сам опрос, так и его результаты. Странно, что на этом форуме есть люди (на данный момент трое), которые считают, что С++ лучше Форта... :(


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 112 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7, 8  След.

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


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

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


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

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