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

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 87 ]  На страницу Пред.  1, 2, 3, 4, 5, 6  След.
Автор Сообщение
 Заголовок сообщения: Re: обсуждение наброска стандарта
СообщениеДобавлено: Пн июн 17, 2013 13:29 
Не в сети

Зарегистрирован: Ср фев 17, 2010 18:10
Сообщения: 323
Откуда: Тверь
Благодарил (а): 13 раз.
Поблагодарили: 11 раз.
Я по поводу вызова внешних функций. (API-CALL) – это что то непонятное.
Должно быть в базовом наборе:
C-EXEC
PAS-EXEC
На их базе можно определить слова более высокого уровня:
CDECL-Call
CDECL-Call-N
STDCALL-Call
STDCALL-Call-N
WINAPI-Call
WINAPI-Call-N
Extern
THIS-CDECL-Linux-gcc-Call
THIS-CDECL-Win-MinGW-Call
Очень похоже на это сделано в VFXforth.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: обсуждение наброска стандарта
СообщениеДобавлено: Пн июн 17, 2013 13:37 
mgw писал(а):
Должно быть в базовом наборе...
Можно и еще запутаннее. Речь не столько о самих вызовах, сколько об их "обвесе" - сохранении регистров, линковке библиотек, передаче параметров-значений... В одной Винде-32 я, помнится, насчитал по четыре разновидности в четырех аспектах...


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: обсуждение наброска стандарта
СообщениеДобавлено: Пн июн 17, 2013 13:54 
Не в сети
Moderator
Moderator
Аватара пользователя

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

в чем между ними разница?mgw

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: обсуждение наброска стандарта
СообщениеДобавлено: Пн июн 17, 2013 13:56 
mOleg писал(а):
в чем между ними разница?
В способах передачи параметров и очистки стека.


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: обсуждение наброска стандарта
СообщениеДобавлено: Пн июн 17, 2013 14:24 
Не в сети

Зарегистрирован: Ср фев 17, 2010 18:10
Сообщения: 323
Откуда: Тверь
Благодарил (а): 13 раз.
Поблагодарили: 11 раз.
Код:
\  Слова  PAS-EXEC и C-EXEC взяты из файла ~ac\lib\ns\so-xt.f

USER _PAS-EXEC \ без локальных переменных неудобно ;)
: PAS-EXEC ( ... n dll-xt -- x )
\ n - число параметров на стеке для dll-функции
\ Параметры снимает вызываемый.
  _PAS-EXEC !
  ?DUP IF N>R RDROP THEN
  0 _PAS-EXEC @ EXECUTE
;
USER _C-EXEC
: C-EXEC ( ... n dll-xt -- x )
\ n - число параметров на стеке для dll/so-функции
\ Параметры снимает вызывающий.
  _PAS-EXEC ! DUP _C-EXEC !
  ?DUP IF N>R RDROP THEN
  _C-EXEC @ 0 _PAS-EXEC @ EXECUTE
  SWAP BEGIN DUP WHILE RDROP 1- REPEAT DROP
;

Эти слова основа для работы с динамическими библиотеками в Win и Linux. Эти слова
понятны программистам новичкам, так как они подробно расписаны в интернете. Скажем так - узнаваемы.

На их базе можно определить слова более высокого уровня:
CDECL-Call
CDECL-Call-N
STDCALL-Call
STDCALL-Call-N
WINAPI-Call
WINAPI-Call-N
Extern
THIS-CDECL-Linux-gcc-Call
THIS-CDECL-Win-MinGW-Call
а это уже в библиотеку. Что бы новички понимали, что это производная, но более близкая к стандартам С.
Удобочитаемость важна не менее, чем быстродействие.


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

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

А с точки зрения стандарта?

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


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

Зарегистрирован: Ср фев 17, 2010 18:10
Сообщения: 323
Откуда: Тверь
Благодарил (а): 13 раз.
Поблагодарили: 11 раз.
Стандарт должен быть понятен и достаточен. Эти два слова в стандарте - компромисс между минимализмом и пониманием


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: обсуждение наброска стандарта
СообщениеДобавлено: Пн июн 17, 2013 14:34 
mOleg писал(а):
А с точки зрения стандарта?
С точки зрения стандарта, скорее всего, надо исходить из статьи ребят из XEROX, доказавших, что с точки зрения программы не важно, в какой ОС она работает: ориентированной на процессы или на сообщения...
Статья: ON THE DUALITY OF OPERATING SYSTEM STRUCTURES, HUGH C.LAUER, XEROX CORPORATION, PALO ALTO, CALIFORNIA, ROGER M.NEEDHAM, CAMBRIDGE UNIVERSITY, CAMBRIDGE, ENGLAND


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: обсуждение наброска стандарта
СообщениеДобавлено: Пн июн 17, 2013 14:37 
Не в сети

Зарегистрирован: Ср фев 17, 2010 18:10
Сообщения: 323
Откуда: Тверь
Благодарил (а): 13 раз.
Поблагодарили: 11 раз.
Основные библиотеки надо тоже стандартизировать. Вызовы внешних функций, строки, объекты - это должно быть расписано от и до, внесено в документацию и проверено на кросплатформенность.


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

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

Ну, давай возьмем 64-битную винду, в ней почти всегда параметры передаются через регистры..

У меня следующие соображения:
- ядро системы использует необходимый минимум функций (сомнительно, что они будут вызываться различным образом);
- стандарт обязывает реализовывать все перечисленные в нем вещи (иначе получаем частичную несовместимость);

С другой стороны, даже (API-CALL) не всегда нужен.

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: обсуждение наброска стандарта
СообщениеДобавлено: Пн июн 17, 2013 14:43 
mgw писал(а):
Основные библиотеки надо тоже стандартизировать. Вызовы внешних функций, строки, объекты - это должно быть расписано от и до, внесено в документацию и проверено на кросплатформенность.
Это, мягко говоря, неверно. Совсем.
Вызовы внешних функций? В большинстве ОС большую часть функций нельзя вызвать "просто так". Нужно немного пошаманить.
Объекты? Кто не понимает, почему Forth не нуждается в объектах, тот не понимает Forth.
Строки? Любая попытка их стандартизации влечет за собой жуткую потерю эффективности (тоже - списки, множества и т.д.).
Кросплатформенность? Обычно фетиш. Но для Forth - просто смешно.


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: обсуждение наброска стандарта
СообщениеДобавлено: Пн июн 17, 2013 14:45 
Не в сети
Moderator
Moderator
Аватара пользователя

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

Нам бы ядро осилить 8)

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


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

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

Не совсем согласен.
Что понимать под кросплатформенностью?

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


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

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
mgw писал(а):
Слова  PAS-EXEC и C-EXEC взяты из файла ~ac\lib\ns\so-xt.f

Кстати, таки ужасны вызовы АПИ ф-ций в СПФ 8(

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


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

Зарегистрирован: Ср фев 17, 2010 18:10
Сообщения: 323
Откуда: Тверь
Благодарил (а): 13 раз.
Поблагодарили: 11 раз.
Насчет 64 разрядных ОС, спорить не буду. Я не владею этим вопросом. Я опираюсь на свой опыт изучения форта. В своё время отсутствие четкого описания как вызывать внешние функции на SPF сильно меня затормозило. Говоря про SPF имею ввиду косплатформенность. Недавно (ради интереса) посмотрел VFXforth и сразу в нем увидел все вызовы, за введение которых и ратую. Они то это сделали почему то. Для обычных сишников - это очень нужно.



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

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


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

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


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

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