Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Ср авг 15, 2018 16:32

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 76 ]  На страницу Пред.  1, 2, 3, 4, 5, 6  След.
Автор Сообщение
 Заголовок сообщения: Re: С чего начать?
СообщениеДобавлено: Пт янв 20, 2017 19:50 
Не в сети
Аватара пользователя

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 520
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 22 раз.
vikt писал(а):
Ethereal писал(а):
А стоит написать ? Просто имеется опыт.

Безусловно стоит

Два дня читал, ломал голову. Реализовывать нужно некоторую абстрактную машину.
Тогда не ко мне. Я ассемблерщик до мозга костей. Непонимаю абстрактные машины там где можно писать для реальных.
Форт-система для меня как бы строится из трех слоев (оставлю в стороне пока технику кросс-компиляции Форта, я такое не делал еще) :
- низкоуровневые определения на ассемблере
- высокоуровневый шитый код
- текст на самом Форте который скармливается первым двум слоям
При переносе на другую платформу приходится переписывать первое, но не меняется второе и третье.
Но, если первое сделать для абстрактной машины, то тебе ведь все равно придется определять команды этой машины в кодах ассемблера целевой платформы. Объем работ от этого принципиально-то не уменьшается. А эффективность падает катастрофически.
Я понимаю такой подход для Паскаля с P-кодом. Тогда при наличии P-кода не нужно при переносе с платформы на платформу переписывать сложный алгоритм кодогенерации. Но в Форте-то этот алгоритм тривиален - или , или CALL, (случай генерации не шитого, а машинного кода с оптимизацией не рассматриваем ибо такое не для руководства "Простой Форт с нуля")
Где выигрыш от абстрактной машины ?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: С чего начать?
СообщениеДобавлено: Пт янв 20, 2017 20:28 
Ethereal писал(а):
Где выигрыш от абстрактной машины ?
Реализации FORTH не как затычки для не умеющих писать нормальные компиляторы, а как средства создания проблемно-ориентированных языков для любой машины.


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: С чего начать?
СообщениеДобавлено: Пт янв 20, 2017 20:54 
Не в сети
Аватара пользователя

Зарегистрирован: Вт авг 12, 2008 03:18
Сообщения: 220
Откуда: Москва
Благодарил (а): 25 раз.
Поблагодарили: 2 раз.
В ьольшинстве мобильных платформ. а только такие меня интересуют,
нет возможности писать ни на чем, кроме java.
Соответственно, ни ассемблера, ни шитого кода организовать не возможно.
Технологии, создающие из программы на форте исполняемый java файл не интересуют
тоже. Нужны простые, однородные (то есть по возможности не меняющиеся от программы к программе). средства создания скриптов внутри программы.
Это избавит программу от гигантского кол-ва кнопок и экранов, которые вдобавок
плохо видно на солнце. Опыт создания таких систем у меня имеется, просто хочеться
програмировать скрипты на форте, а не чем то фортоподобном.

_________________
Линукс решает, винда глотает.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: С чего начать?
СообщениеДобавлено: Пт янв 20, 2017 21:07 
vikt писал(а):
хочеться програмировать скрипты на форте, а не чем то фортоподобном.
1) FORTH сам фортоподобен. Настолько, что ни один стандарт не приживается;
2) переписывание непонравившегося FORTH на более правильный занимает две недели без отрыва от работы.
И, повторяю, сначала создайте (можете даже не создавать, но продумать откуда и куда он будет вести и через что реализовываться) канал символьного ввода - через который можно будет запихивать скрипты в работающую программу. Остальное гораздо проще.


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: С чего начать?
СообщениеДобавлено: Пт янв 20, 2017 22:54 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 584
Благодарил (а): 0 раз.
Поблагодарили: 3 раз.
А как вариант покопаться в байт-коде джавы. Подправить там. А потом вызвать код родной для архитектуры?
Хакерство, так сказать

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: С чего начать?
СообщениеДобавлено: Сб янв 21, 2017 01:51 
Не в сети
Аватара пользователя

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 520
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 22 раз.
@vikt
Да если есть Ява, то есть и Ява-байт-код. И для него есть ассемблер JASMIN. И шитый код на нем построить можно, но кажется только подпрограммный.

@Viktor_v
Подправить Ява-байт-код чтобы вызывать этим машинный код можно только используя дыры в конкретной реализации Ява-машины, если такие есть. Там жесткая типизация повсюду и шаг влево, шаг вправо карается. Я с ним поковырялся и чувствовал себя как в цепях окованный. Даже к адресу единицу не прибавить. Низзя. Тип указатель с типом целый складывать низзя.


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

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 584
Благодарил (а): 0 раз.
Поблагодарили: 3 раз.
Цитата:
Я с ним поковырялся

Что ж, вам виднее. Но, раз с джавой надо танцевать танцы с бубнами по несерьёзным вопросам,то и указатель где-то мог затеряться.
А на счёт цепей у меня такое чувство все языки программирования вызывают. Кроме форта и ассемблера

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: С чего начать?
СообщениеДобавлено: Сб янв 21, 2017 12:06 
Ethereal писал(а):
...
Victor__v писал(а):
...
FORTH идет на ЛЮБОЙ машине. Если вам чего-то не хватает "для честной реализации", значит вы еще не фортер.


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: С чего начать?
СообщениеДобавлено: Сб янв 21, 2017 16:05 
P.S. Добавил в "ОБЩИЕ МЕСТА" своих FORTH-заметок замечание о необходимости вывешивания ПОТОКА (как уровне-образующей сущности) до начала изобретения FORTH-системы. Может, дойдет до микро-фортеров. (Или правильнее по самоназванию их вожака - микро-гоблинов).


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: С чего начать?
СообщениеДобавлено: Вс янв 22, 2017 12:01 
Не в сети
Аватара пользователя

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 520
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 22 раз.
gudleifr писал(а):
FORTH идет на ЛЮБОЙ машине. Если вам чего-то не хватает "для честной реализации", значит вы еще не фортер.
А где было написано, что чего-то не хватает для честной реализации ?

Но тут встрял Задавака. Как всегда не в тему. (Из одного из гоблинских переводов фильмов).

Я слова Виктора понял, как речь о том, чтобы нарисовать такой Ява-байт-код, чтобы ИМ провалиться в нативный. Это крайне нечестное хакерство и далеко не всегда возможное. Надуть виртуальную машину Явы, так сказать.
А про честную работу с Ява-байт-кодом я написал, что подпрограммный шитый код там построить можно. Так-что без проблем.


Последний раз редактировалось Ethereal Вс янв 22, 2017 12:10, всего редактировалось 1 раз.

Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: С чего начать?
СообщениеДобавлено: Вс янв 22, 2017 12:07 
Ethereal писал(а):
А где было написано, что чего-то не хватает для честной реализации ?

Ethereal писал(а):
Я с ним поковырялся и чувствовал себя как в цепях окованный.


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: С чего начать?
СообщениеДобавлено: Вс янв 22, 2017 12:14 
Не в сети
Аватара пользователя

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 520
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 22 раз.
Да, именно так. Как в цепях окованный не Форт написать, а хакнуть эту Ява-машину. Так ее задурить, чтобы управление слетело на нативный код. Так вот ее трудно задурить. Каждые данные сопровождаются описанием их типа и эти типы проверяются. Всесто указателя целое не подсунуть. Указатель не сложить с константой. Не передать вместо указателя на массив указатель на что попало.

В конце концов я на своей платформе Яву таки хакнул. Нашлась в данной реализации Ява-машины уязвимость. Разумеется специфичная только для данной реализации. Но даже назвать ее и сказать как боюсь. Ибо дыру же прикроют. Как только дыру засвечивают ее сразу патчят.

Victor__v писал(а):
Хакерство, так сказать

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

А в общем сценарий хака теоретически могу озвучить.
Есть команды baload и bastore чтения и записи байт в массив. Когда они ссылаются на массив в заголовке массива хранится его размер. И за пределы массива не записать. Но если найти способ пакостить указатель, то можно подсунуть этим командам указатель на что-попало. И тогда размер массива выйдет каким попало. Если он выйдет большим, то командой baload можно будет читать в широком диапазоне памяти, а bastore туда писать. И задача сводится уже к тому, чтобы подпортить что-то в памяти так, чтобы управление выкинуло на твой машинный код, подсунутый Ява-машине под видом данных. Причвм, возможность решения этой задачи также зависит от везения. Может статься, что нелегально писать ты можешь много куда, но ничего полезного из этого не выжать.


Последний раз редактировалось Ethereal Вс янв 22, 2017 12:49, всего редактировалось 5 раз(а).

Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: С чего начать?
СообщениеДобавлено: Вс янв 22, 2017 12:27 
Ethereal писал(а):
Да, именно так. Как в цепях окованный не Форт написать, а хакнуть эту Ява-машину.
А нафига? Есть хорошая машина Java+конкретное железо. Вычленяем из текущей задачи немодифицируемые куски. Пишем их на Java и объявляем FORTH-словами. Организуем на машине канал, по которому можно передавать параметры и сами слова... Обычно задача заканчивается раньше, чем программист докапывается до необходимости ломать Java.


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: С чего начать?
СообщениеДобавлено: Вс янв 22, 2017 12:40 
Не в сети
Аватара пользователя

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 520
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 22 раз.
Просто я рассуждал про два совершенно отдельных вопроса
- можно ли написать Форт для Ява-машины
- можно ли хакнуть Ява-машину.
Второе бывает нужно, но не в связи с первым.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: С чего начать?
СообщениеДобавлено: Вс янв 22, 2017 13:12 
Ethereal писал(а):
...
Понятно. Правда, на мой вкус правильнее не "FORTH на Java-машине", а "FORTH на машине, на которой стоит Java-машина".


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

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


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

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


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

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