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

...
Google Search
Forth-FAQ Spy Grafic

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




Ответить
Имя пользователя:
Заголовок:
Текст сообщения:
Введите текст вашего сообщения. Длина сообщения в символах не более: 60000

Размер шрифта:
Цвет шрифта
Настройки:
BBCode ВКЛЮЧЕН
[img] ВЫКЛЮЧЕН
[flash] ВЫКЛЮЧЕН
[url] ВКЛЮЧЕН
Смайлики ВЫКЛЮЧЕНЫ
Отключить в этом сообщении BBCode
Не преобразовывать адреса URL в ссылки
Вопрос
Теперь гостю придется вводить здесь пароль. Не от своей учетной записи, а ПАРОЛЬ ДЛЯ ГОСТЯ, получить который можно после регистрации на форуме через ЛС.:
Этот вопрос предназначен для выявления и предотвращения автоматических регистраций.
   

Обзор темы - x64 Форт?
Автор Сообщение
  Заголовок сообщения:  Re: x64 Форт?  Ответить с цитатой
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:
Сообщение Добавлено: Чт окт 10, 2019 21:54
  Заголовок сообщения:  Re: x64 Форт?  Ответить с цитатой
Так-с, путём гугления, выяснилось, что конвенция вызовов в 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
Сообщение Добавлено: Ср окт 09, 2019 20:13
  Заголовок сообщения:  Re: x64 Форт?  Ответить с цитатой
dmitri писал(а):
В 64-битном линуксе для передачи параметров используется System V AMD64 ABI.
Проблема коллбеков в том, что существующие форты для 64-битного линукса с открытым исходным кодом их не поддерживают.
Кто-то должен с нуля их закодить. Остальным будет легче.

gforth может в callback, но он жи на ЦЭ написан.
Сообщение Добавлено: Ср окт 09, 2019 19:31
  Заголовок сообщения:  Re: x64 Форт?  Ответить с цитатой
Victor__v писал(а):
Ilya писал(а):
Linux.
Я как мин. использую:
libmosquitto.so - mosquitto_message_callback_set & mosquitto_connect_callback_set
libgtk-3.so - g_signal_connect

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

Я вот тут не в курсе, но обращался к нескольким Фортописателям (умеющих в динлибы, но не реализовавшие callback) и они только разводили руками! :?
Сообщение Добавлено: Ср окт 09, 2019 19:28
  Заголовок сообщения:  Re: x64 Форт?  Ответить с цитатой
В 64-битном линуксе для передачи параметров используется System V AMD64 ABI.
Проблема коллбеков в том, что существующие форты для 64-битного линукса с открытым исходным кодом их не поддерживают.
Кто-то должен с нуля их закодить. Остальным будет легче.
Сообщение Добавлено: Ср окт 09, 2019 17:04
  Заголовок сообщения:  Re: x64 Форт?  Ответить с цитатой
f02732 писал(а):
Так в чем проблема, я так и не понял? Сложно реализовать из-за того, что на 64-разрядных системах принято соглашение fastcall с передачей параметров через регистры?

Мне вот тоже это интересно. В чём там проблема конкретно?
Мало ли какие-то сложности имеются.
а разве в linyx fastcall?
В винде под 64 бит да.
Сообщение Добавлено: Вт окт 08, 2019 19:21
  Заголовок сообщения:  Re: x64 Форт?  Ответить с цитатой
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 с передачей параметров через регистры?
Сообщение Добавлено: Вт окт 08, 2019 18:03
  Заголовок сообщения:  Re: x64 Форт?  Ответить с цитатой
Ilya писал(а):
Linux.
Я как мин. использую:
libmosquitto.so - mosquitto_message_callback_set & mosquitto_connect_callback_set
libgtk-3.so - g_signal_connect

С Linux знаком мало.
Какая там конвенция вызовов для калбеков?
stdcall?
cdecl?
Сообщение Добавлено: Пн окт 07, 2019 16:42
  Заголовок сообщения:  Re: x64 Форт?  Ответить с цитатой
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
Сообщение Добавлено: Пн окт 07, 2019 16:23
  Заголовок сообщения:  Re: x64 Форт?  Ответить с цитатой
Ilya писал(а):
KPG писал(а):
kForth-64

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

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


А какие проблемы с CALLBACK на 64 битах?
и где именно UNIX, Мастдай?
Сообщение Добавлено: Пн окт 07, 2019 11:15
  Заголовок сообщения:  Re: x64 Форт?  Ответить с цитатой
Ilya писал(а):
Вроде и ничего так, но у него нема CALLBACK:. А это очень потребная штука, хоть для GTK, хоть для MQTT и т.п.

Это да, но провозившись с Qt, я понял, что вести позиционную войну с компилятором слишком накладно. Надо отдельно думать, как получать адреса функций динамически создаваемых объектов. Что-то с callback нужно делать. Сейчас я использую эмуляцию очереди сообщений от форт-машины вызывающей программе.
Сообщение Добавлено: Вс сен 29, 2019 17:44
  Заголовок сообщения:  Re: x64 Форт?  Ответить с цитатой
KPG писал(а):
kForth-64

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

Вроде и ничего так, но у него нема CALLBACK:. А это очень потребная штука, хоть для GTK, хоть для MQTT и т.п.
Задал вопрос автору, он не то чтобы послал меня, а отослал меня на какой-то мутный пример. :(
Сообщение Добавлено: Вс сен 29, 2019 17:24
  Заголовок сообщения:  Re: x64 Форт?  Ответить с цитатой
kForth-64

P.S. Вроде есть обсуждаемая тема по разработке 64-х разрядного Форта на местном форуме, но сходу не нашёл.
Сообщение Добавлено: Вс сен 29, 2019 14:21
  Заголовок сообщения:  Re: x64 Форт?  Ответить с цитатой
Ещё какой то x64 Форт
A self hosting forth compiler for x64 Windows
Сообщение Добавлено: Ср сен 04, 2019 21:33
  Заголовок сообщения:  Re: x64 Форт?  Ответить с цитатой
Нашел iForth (скачать). Есть версии x86 и x64 как под линукс так и под виндоус. Работает из коробки, в комплекте своя IDE, консоль, графическая консоль, четыре сотни немаленьких примеров: в том числе десяток игрушек типа судоку и тетрис; нейронные сети с распознаванием образов; плагин для матлаба; IRC/RSS/POP3/Telnet клиенты и даже экспертная система.
Сообщение Добавлено: Сб янв 21, 2012 15:30

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


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