Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Ср окт 23, 2019 13:47

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 30 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: x64 Форт?
СообщениеДобавлено: Сб янв 21, 2012 15:30 
Не в сети
Аватара пользователя

Зарегистрирован: Вт мар 20, 2007 23:39
Сообщения: 1261
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
Нашел iForth (скачать). Есть версии x86 и x64 как под линукс так и под виндоус. Работает из коробки, в комплекте своя IDE, консоль, графическая консоль, четыре сотни немаленьких примеров: в том числе десяток игрушек типа судоку и тетрис; нейронные сети с распознаванием образов; плагин для матлаба; IRC/RSS/POP3/Telnet клиенты и даже экспертная система.

_________________
Cтоимость сопровождения программного обеспечения пропорциональна квадрату творческих способностей программиста.
Роберт Д. Блисc


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: x64 Форт?
СообщениеДобавлено: Ср сен 04, 2019 21:33 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 1121
Благодарил (а): 3 раз.
Поблагодарили: 42 раз.
Ещё какой то x64 Форт
A self hosting forth compiler for x64 Windows


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: x64 Форт?
СообщениеДобавлено: Вс сен 29, 2019 14:21 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 1121
Благодарил (а): 3 раз.
Поблагодарили: 42 раз.
kForth-64

P.S. Вроде есть обсуждаемая тема по разработке 64-х разрядного Форта на местном форуме, но сходу не нашёл.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: x64 Форт?
СообщениеДобавлено: Вс сен 29, 2019 17:24 
Не в сети

Зарегистрирован: Чт ноя 23, 2006 00:44
Сообщения: 356
Откуда: СПб
Благодарил (а): 11 раз.
Поблагодарили: 4 раз.
KPG писал(а):
kForth-64

P.S. Вроде есть обсуждаемая тема по разработке 64-х разрядного Форта на местном форуме, но сходу не нашёл.

Вроде и ничего так, но у него нема CALLBACK:. А это очень потребная штука, хоть для GTK, хоть для MQTT и т.п.
Задал вопрос автору, он не то чтобы послал меня, а отослал меня на какой-то мутный пример. :(


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: x64 Форт?
СообщениеДобавлено: Вс сен 29, 2019 17:44 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6808
Благодарил (а): 16 раз.
Поблагодарили: 110 раз.
Ilya писал(а):
Вроде и ничего так, но у него нема CALLBACK:. А это очень потребная штука, хоть для GTK, хоть для MQTT и т.п.

Это да, но провозившись с Qt, я понял, что вести позиционную войну с компилятором слишком накладно. Надо отдельно думать, как получать адреса функций динамически создаваемых объектов. Что-то с callback нужно делать. Сейчас я использую эмуляцию очереди сообщений от форт-машины вызывающей программе.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: x64 Форт?
СообщениеДобавлено: Пн окт 07, 2019 11:15 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 906
Благодарил (а): 1 раз.
Поблагодарили: 8 раз.
Ilya писал(а):
KPG писал(а):
kForth-64

P.S. Вроде есть обсуждаемая тема по разработке 64-х разрядного Форта на местном форуме, но сходу не нашёл.

Вроде и ничего так, но у него нема CALLBACK:. А это очень потребная штука, хоть для GTK, хоть для MQTT и т.п.
Задал вопрос автору, он не то чтобы послал меня, а отослал меня на какой-то мутный пример. :(


А какие проблемы с CALLBACK на 64 битах?
и где именно UNIX, Мастдай?

_________________
Цель: сделать 64-битную Нову под Винду


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: x64 Форт?
СообщениеДобавлено: Пн окт 07, 2019 16:23 
Не в сети

Зарегистрирован: Чт ноя 23, 2006 00:44
Сообщения: 356
Откуда: СПб
Благодарил (а): 11 раз.
Поблагодарили: 4 раз.
Victor__v писал(а):
Ilya писал(а):
KPG писал(а):
kForth-64

P.S. Вроде есть обсуждаемая тема по разработке 64-х разрядного Форта на местном форуме, но сходу не нашёл.

Вроде и ничего так, но у него нема CALLBACK:. А это очень потребная штука, хоть для GTK, хоть для MQTT и т.п.
Задал вопрос автору, он не то чтобы послал меня, а отослал меня на какой-то мутный пример. :(


А какие проблемы с CALLBACK на 64 битах?
и где именно UNIX, Мастдай?

Linux.
Я как мин. использую:
libmosquitto.so - mosquitto_message_callback_set & mosquitto_connect_callback_set
libgtk-3.so - g_signal_connect


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: x64 Форт?
СообщениеДобавлено: Пн окт 07, 2019 16:42 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 906
Благодарил (а): 1 раз.
Поблагодарили: 8 раз.
Ilya писал(а):
Linux.
Я как мин. использую:
libmosquitto.so - mosquitto_message_callback_set & mosquitto_connect_callback_set
libgtk-3.so - g_signal_connect

С Linux знаком мало.
Какая там конвенция вызовов для калбеков?
stdcall?
cdecl?

_________________
Цель: сделать 64-битную Нову под Винду


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: x64 Форт?
СообщениеДобавлено: Вт окт 08, 2019 18:03 
Не в сети

Зарегистрирован: Пн июл 01, 2019 14:01
Сообщения: 50
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Victor__v писал(а):
Ilya писал(а):
Linux.
Я как мин. использую:
libmosquitto.so - mosquitto_message_callback_set & mosquitto_connect_callback_set
libgtk-3.so - g_signal_connect

С Linux знаком мало.
Какая там конвенция вызовов для калбеков?
stdcall?
cdecl?

Так в чем проблема, я так и не понял? Сложно реализовать из-за того, что на 64-разрядных системах принято соглашение fastcall с передачей параметров через регистры?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: x64 Форт?
СообщениеДобавлено: Вт окт 08, 2019 19:21 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 906
Благодарил (а): 1 раз.
Поблагодарили: 8 раз.
f02732 писал(а):
Так в чем проблема, я так и не понял? Сложно реализовать из-за того, что на 64-разрядных системах принято соглашение fastcall с передачей параметров через регистры?

Мне вот тоже это интересно. В чём там проблема конкретно?
Мало ли какие-то сложности имеются.
а разве в linyx fastcall?
В винде под 64 бит да.

_________________
Цель: сделать 64-битную Нову под Винду


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: x64 Форт?
СообщениеДобавлено: Ср окт 09, 2019 17:04 
Не в сети

Зарегистрирован: Чт июл 12, 2018 02:33
Сообщения: 6
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
В 64-битном линуксе для передачи параметров используется System V AMD64 ABI.
Проблема коллбеков в том, что существующие форты для 64-битного линукса с открытым исходным кодом их не поддерживают.
Кто-то должен с нуля их закодить. Остальным будет легче.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: x64 Форт?
СообщениеДобавлено: Ср окт 09, 2019 19:28 
Не в сети

Зарегистрирован: Чт ноя 23, 2006 00:44
Сообщения: 356
Откуда: СПб
Благодарил (а): 11 раз.
Поблагодарили: 4 раз.
Victor__v писал(а):
Ilya писал(а):
Linux.
Я как мин. использую:
libmosquitto.so - mosquitto_message_callback_set & mosquitto_connect_callback_set
libgtk-3.so - g_signal_connect

С Linux знаком мало.
Какая там конвенция вызовов для калбеков?
stdcall?
cdecl?

Я вот тут не в курсе, но обращался к нескольким Фортописателям (умеющих в динлибы, но не реализовавшие callback) и они только разводили руками! :?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: x64 Форт?
СообщениеДобавлено: Ср окт 09, 2019 19:31 
Не в сети

Зарегистрирован: Чт ноя 23, 2006 00:44
Сообщения: 356
Откуда: СПб
Благодарил (а): 11 раз.
Поблагодарили: 4 раз.
dmitri писал(а):
В 64-битном линуксе для передачи параметров используется System V AMD64 ABI.
Проблема коллбеков в том, что существующие форты для 64-битного линукса с открытым исходным кодом их не поддерживают.
Кто-то должен с нуля их закодить. Остальным будет легче.

gforth может в callback, но он жи на ЦЭ написан.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: x64 Форт?
СообщениеДобавлено: Ср окт 09, 2019 20:13 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 906
Благодарил (а): 1 раз.
Поблагодарили: 8 раз.
Так-с, путём гугления, выяснилось, что конвенция вызовов в Lin fastcall
Насколько это вообще применимо к каллбекам :?:
Будем считать, что преминимо полностью
6-ть аргументов передаются в регистрах: RDI, RSI, RDX, RCX, r8, r9

Форт-часть:
: CALLBACK: \ n --
HEADER
['] (lin-fastcall) COMPILE,
, \ сохраняем число берущихся переменных
TRUE STATE !
;

Ассемблерная часть:
; ЭТО (lin-fastcall)
; в RAX передаётся код либы. Но у на CALLBACK поэтому считаем, что этот регистр не используется никак
PUSH RBP
LEA RAX, [RSP+8] ; получаем количество параметров


PUSH RAX
MOV RAX, [RAX]
OR EAX, EAX
POP RAX
JE params

PUSH RDI
CMP [RAX], 1
JE params

PUSH RSI
CMP [RAX], 2
JE params

PUSH RDX
CMP [RAX], 3
JE params

PUSH RCX
CMP [RAX], 4
JE params


PUSH r8
CMP [RAX], 5
JE params


PUSH r9
CMP [RAX], 6
JE params

; короче забьём и дадим ссылку на оставшиеся параметры
PUSH RAX
MOV RAX, [RAX-24] ; 8 - игнорирование вызова ЭТОГО КОДА 8 игнорирование вызова слова CALLBACK 8 - игнорирование PUSH RBP вначале
XCHG RAX, [RSP]
; что нужно форту? форту нужен стек данных
param:
LEA RSP, -320 ; 40 ЯЧЕЕК надеюсь хватит?

LEA RBP, RSP ; начало стека данных

; собственно сам вызов
PUSH RAX ; сохраняем изначальный указатель
LEA RAX, [RAX+8]
PUSH RAX
LEA RAX, [RSP+2*8+320] ; указатель на наши параметры
CALL [ESP]
MOV RSP, [RSP+8] ; возвращаем усё как было
POP RBP
RET

Ну вот вам и :^) примерный код :^)

Если только каллбеки используют FASTCALL

_________________
Цель: сделать 64-битную Нову под Винду


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: x64 Форт?
СообщениеДобавлено: Чт окт 10, 2019 21:54 
Не в сети

Зарегистрирован: Чт ноя 23, 2006 00:44
Сообщения: 356
Откуда: СПб
Благодарил (а): 11 раз.
Поблагодарили: 4 раз.
Victor__v писал(а):
Ассемблерная часть:
; ЭТО (lin-fastcall)
; в RAX передаётся код либы. Но у на CALLBACK поэтому считаем, что этот регистр не используется никак
PUSH RBP
LEA RAX, [RSP+8] ; получаем количество параметров


PUSH RAX
MOV RAX, [RAX]
OR EAX, EAX
POP RAX
JE params
.......

; что нужно форту? форту нужен стек данных
param:
LEA RSP, -320 ; 40 ЯЧЕЕК надеюсь хватит?

Ну вот вам и :^) примерный код :^)

Если только каллбеки используют FASTCALL

Здорово!
Вот только маленькая очепятка у вас :
Код:
JE params
и
Код:
param:
:wink:


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

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


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

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


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

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