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

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 536 ]  На страницу Пред.  1 ... 21, 22, 23, 24, 25, 26, 27 ... 36  След.
Автор Сообщение
 Заголовок сообщения: Re: Моя система(_KROL)
СообщениеДобавлено: Пт дек 01, 2017 21:54 
Не в сети

Зарегистрирован: Пт янв 06, 2017 14:57
Сообщения: 365
Благодарил (а): 17 раз.
Поблагодарили: 1 раз.
Потиху начал. Завтра/послезавтра надеюсь продолжу. Комментировать можно и здесь.
http://gudleifr.forum2x2.ru/t32p25-topic#702


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Моя система(_KROL)
СообщениеДобавлено: Сб дек 02, 2017 19:09 
<Потерто по справедливому замечанию Victor__v>


Последний раз редактировалось gudleifr Сб янв 27, 2018 14:46, всего редактировалось 1 раз.

Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Моя система(_KROL)
СообщениеДобавлено: Вс дек 03, 2017 20:55 
Не в сети
Аватара пользователя

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 600
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 24 раз.
@KROL
Чего-то ты там ударился в бюрократию. На кой черт записывать соглашения о том, как оформлять комментарии ? Стиль оформления идет как бы по факту. Посмотри как оформлялось и продолжай в том-же духе. Зато из этого
>SI - IA (Interpret Address - адрес интерпретации)
совершенно непонятно прямой шитый код или косвенный. Ну и вопрос Гудлейфра также остался в непонятках - в какую среду хочешь Форт посадить.

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

В частности в данном случае хотелось бы мне уяснить твои замыслы, чтобы накидать какой-то костяк, показать тебе и спросить - это то, что ты имел ввиду ? Если да, то давай костяк нарастим следующим этапом. Потом еще одним. Пока не получилось бы что-то минималистское, но воплощающее твои замыслы без глюков. И страничкой соглашений продокументированное и тебе ясное и понятное как оно внутри работает. А дальше уже напластовывай на эту понятную и надежную основу мяса как хошь.
А то у тебя пока получился old4th в котором что-то не то, а где оно не-то Х его З.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Моя система(_KROL)
СообщениеДобавлено: Вс дек 03, 2017 21:28 
Не в сети

Зарегистрирован: Пт янв 06, 2017 14:57
Сообщения: 365
Благодарил (а): 17 раз.
Поблагодарили: 1 раз.
План-описание пока не буду изменять... (пока)
Вчера у меня родилсь такая идея. Буду обрисовывать готовый "продукт".
Есть ядро ОС (16-бит NATIVE или для DOS). Его загружает bootsector(NATIVE) или loader (DOS).
Основная цель - заменить/усовершенствовать DOS. Для этого в ядре помимо стандартных прибамбасов есть ВФМ.
Пусть есть специальные файлы 4EX - 4tH EXecutable. (ах да, там (в моих мыслях) прямой шитый код, но тут кажется получается косвенный ШК)
Эти файлы как и COM должны начинаться с 0x100, при этом имея PSP (или что-то вроде этого).
Однако, раз ШК косвенный, то первые 256 байт, которые указывают на PSP, не должны исполнятся (а зачем?).
Вместо этого АИ их воспринимает как системные функции и исполняет соответствующие подпрограммы.
Т.е.
Цитата:
dw 0x1234 ; Переход на 0x1234
|
\/
0x1234: dw 0x22 ; Вызов системной функции 0x22
Т.о. получается, что 4EX-программам прерывания почти не нужны, что ускоряет систему. Кроме этого возможна поддержка "небольшой" многозадачности.
Да, и COM-файлы тоже скорее всего будут поддерживаться (на счёт EXE - не знаю).

Проект начал!


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Моя система(_KROL)
СообщениеДобавлено: Вс дек 03, 2017 21:32 
<Потерто по справедливому замечанию Victor__v>


Последний раз редактировалось gudleifr Сб янв 27, 2018 14:47, всего редактировалось 1 раз.

Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Моя система(_KROL)
СообщениеДобавлено: Вс дек 03, 2017 21:47 
Не в сети
Аватара пользователя

Зарегистрирован: Вт авг 12, 2008 03:18
Сообщения: 327
Откуда: Москва
Благодарил (а): 36 раз.
Поблагодарили: 7 раз.
_KROL писал(а):

Есть ядро ОС (16-бит NATIVE или для DOS). Его загружает bootsector(NATIVE) или loader (DOS).
Основная цель - заменить/усовершенствовать DOS.

Проект начал!


Очевидно не к месту.
Если речь идет о разработке ОС,
то надо выделить привилигированный код и код пользователя.
Иначе получится убожество, уровня мсдос.
Даже если не планируется программировать защищенный режим,
все равно он должен подразумеваться, чтоб допрограммировать,
когда дойдут руки
Если кто-то этим занимается, буду тему мониторить, не взирая
на ассемблер, для общего развития.

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Моя система(_KROL)
СообщениеДобавлено: Вс дек 03, 2017 22:03 
Не в сети

Зарегистрирован: Пт янв 06, 2017 14:57
Сообщения: 365
Благодарил (а): 17 раз.
Поблагодарили: 1 раз.
vikt писал(а):
_KROL писал(а):

Есть ядро ОС (16-бит NATIVE или для DOS). Его загружает bootsector(NATIVE) или loader (DOS).
Основная цель - заменить/усовершенствовать DOS.

Проект начал!


Очевидно не к месту.
Если речь идет о разработке ОС,
то надо выделить привилигированный код и код пользователя.
Иначе получится убожество, уровня мсдос.
Даже если не планируется программировать защищенный режим,
все равно он должен подразумеваться, чтоб допрограммировать,
когда дойдут руки
Если кто-то этим занимается, буду тему мониторить, не взирая
на ассемблер, для общего развития.

Ну, если не брать поддержку стандартных типов файлов (COM, EXE, ELF), то через такой шитый код можно и в реальном режиме ограничить доступ приложений к памяти. С другой стороны, систему можно же и расширить до выхода в защищённый режим, не так ли?

Забыл написать, что там как и в CP/M или DOS будет как минимум "COMMAND.4EX" - консольная оболочка, более полноценный Форт (хотя Форт можно и отделить, но это уже как получится, надо сначало сделать ядро).


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Моя система(_KROL)
СообщениеДобавлено: Вс дек 03, 2017 23:22 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1288
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
_KROL писал(а):

Проект начал!

Это уже какой проект по счёту?
Тритий аль четвёртый?

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Моя система(_KROL)
СообщениеДобавлено: Пн дек 04, 2017 17:17 
Не в сети
Аватара пользователя

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 600
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 24 раз.
_KROL писал(а):
Пусть есть специальные файлы 4EX - 4tH EXecutable. (ах да, там (в моих мыслях) прямой шитый код, но тут кажется получается косвенный ШК)
Вопрос косвенный или прямой шитый код как бы не имеет отношения к тому
какой там формат и какие заголовки ты собрался приделывать к исполняемым
файлам. Они имеет отношение только к внутренней кухне исполнения шитого кода.

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

Вот это прямой шитый код нативного определения 1+ и шитого : (1+) 1+ ;
Код:
NEXT   macro
   lodsw      ;получили адрес куда надо прыгнуть
   jmp   ax
   endm

$ENTER:      dec   bp      ;CFA
      dec   bp
      mov   [bp], si
      pop   si
      NEXT

EXIT:      mov   si, [bp]   ;CFA
      inc   bp
      inc   bp
      NEXT

      ;Слово 1+ в нативном коде
ONE_PLUS:   inc   bx      ;CFA
      NEXT

      ;Слово : (1+) 1+ ; в шитом коде
      call   $ENTER      ;CFA
      dw   ONE_PLUS   ;PFA
      dw   EXIT
Тут я верхушку стека храню в регистре bx.

Аналогично косвенный шитый код того-же самого ;
Код:
NEXT   macro
   lodsw      ;получили адрес где лежит адрес куда надо прыгнуть
   mov   di, ax
   jmp   [di]
   endm

$ENTER:      dec   bp
      dec   bp
      mov   [bp], si
      lea   si, 2[di]
      NEXT

EXIT:      dw   $+2      ;CFA
      mov   si, [bp]   ;PFA
      inc   bp
      inc   bp
      NEXT

      ;Слово 1+ в нативном коде
ONE_PLUS:   dw   $+2      ;CFA
      inc   bx      ;PFA
      NEXT

      ;Слово : (1+) 1+ ; в шитом коде
      dw   $ENTER      ;CFA
      dw   ONE_PLUS   ;PFA
      dw   EXIT
Заметь, что при косвенном шитом коде можно весь шитый код перенести
в сегмент данных без прав исполнения кода в нем, а в сегменте кода оставить
только низкоуровневые определения. По сути косвенный шитый код суть код,
обернувшийся одними только данными dw ... dw ... dw ... dw ... А в прямом шитом
коде данные идут в перемешку с действительно исполняющимися call-ами.


Последний раз редактировалось Ethereal Пн дек 04, 2017 17:41, всего редактировалось 4 раз(а).

Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Моя система(_KROL)
СообщениеДобавлено: Пн дек 04, 2017 17:28 
<Потерто по справедливому замечанию Victor__v>


Последний раз редактировалось gudleifr Сб янв 27, 2018 14:47, всего редактировалось 1 раз.

Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Моя система(_KROL)
СообщениеДобавлено: Пн дек 04, 2017 17:34 
Не в сети
Аватара пользователя

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 600
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 24 раз.
http://enc-dic.com/word/d/Doebatsya-moz ... 63551.html
gudleifr писал(а):
А примерами кода, Вы опять создаете иллюзию, что можно писать FORTH, не зная машинного языка.
И КРОЛ-у тоже.
Дык чтобы узнать машинный язык надо писать, писать и тестируя писать.

Вот пусть есть произвольная железяка, даже без ОС. Главное, чтобы у нее
был поток ввода и поток вывода, например по RS-232. Нам потребуется ведь
только через эти потоки сделать KEY KEY? и EMIT . Очень хорошо, если у нее
есть энергонезависимая память, чтобы сохранять наученный чему-то Форт по SAVE .
Если все это есть - красота. Начинаем с того, что пишем что-то, что исполняло
бы шитый код и выводило результат через поток вывода. Я бы написал по смыслу
такое (нарисую пример как COM-файл IBM PC на FASM) - косвенный шитый код и
вывод шитым кодом всех ASCII-символов от пробела и до конца :
Код:
      _$TIB = -80   ;Bottom of terminal input buffer
      _$R0 = _$TIB   ;Top of return stack
      _$S0 = 0E000h   ;Top of data stack

      _$LINK = 0
MACRO      $CODE   len, name, label
{
      dw   _$LINK
      _$LINK = $
      db   len, name
label      dw   $+2
}

MACRO      $NEXT
{
      lodsw
      mov   di, ax
      jmp   word [di]
}

      ORG   100h

      mov   sp, _$S0
      mov   bp, _$R0
      mov   si, COLD
      cld
      $NEXT

      $CODE   3, 'BYE', BYE
      int   20h

      $CODE   3, 'DUP', DUPE
      push   bx
      $NEXT

      $CODE   4, 'DROP', DROP
      pop   bx
      $NEXT

      $CODE   3, 'LIT', LIT
      push   bx
      lodsw
      mov   bx, ax
      $NEXT

      $CODE   2, '1+', ONE_PLUS
      inc   bx
      $NEXT

      $CODE   1, '=', EQUAL
      pop   ax
      xor   ax, bx
      sub   ax, 1
      sbb   bx, bx
      $NEXT

      $CODE   2, 'BL', _BL
      push   bx
      mov   bx, ' '
      $NEXT

      $CODE   6, 'BRANCH', BRANCH
BRANCH_:   add   si, [si]
      $NEXT
      $CODE   7, '?BRANCH', QUERY_BRANCH
      test   bx, bx
      pop   bx
      jz   BRANCH_
      inc   si
      inc   si
      $NEXT

      $CODE   4, 'EMIT', EMIT
      mov   dl, bl
      mov   ah, 2
      int   21h
      pop   bx
      $NEXT

COLD      dw   _BL
@@      dw   DUPE, EMIT
      dw   ONE_PLUS
      dw   DUPE, LIT, 100h, EQUAL
      dw   QUERY_BRANCH, @b-$
      dw   DROP
      dw   BYE
Ну а как шитый код заработал, так начинаем
ко всему этому прикручивать FIND , а потом WORD и INTERPRET. Мучаемся, пишем,
тестируем и по ходу осваиваем и очередной машинный язык и очередное железо.

У вредного Гудлейфра на его форуме была дельная мысль - не надо сразу писать
все. Пишем путем напластования очередного маленького смысла. Вот выше смысла
было совсем мало, но все-таки вышел маленький, законченный этап.


Последний раз редактировалось Ethereal Вт дек 05, 2017 19:16, всего редактировалось 3 раз(а).

Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Моя система(_KROL)
СообщениеДобавлено: Пн дек 04, 2017 19:59 
Не в сети

Зарегистрирован: Пт янв 06, 2017 14:57
Сообщения: 365
Благодарил (а): 17 раз.
Поблагодарили: 1 раз.
Цитата:
Зачем копипастить одно и то же?
Проще проставить параграф из Баранова&Ноздрунова (в данном случае - #2.1).

Так я туда и заглянул, перед тем как сюда написать ;)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Моя система(_KROL)
СообщениеДобавлено: Вт дек 05, 2017 21:00 
Не в сети
Аватара пользователя

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 600
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 24 раз.
В Old4th с 10-й страницы ошибка :
Код:
FWORD CONV_,"#>",0 ; ( -- addr sz )
dw HLD,@,PAD,OVER,_SUB
FEND
Забыл по DROP скинуть со стека число из которого по # выщипывал цифры и которое больше не нужно.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Моя система(_KROL)
СообщениеДобавлено: Вт дек 05, 2017 22:32 
Не в сети

Зарегистрирован: Пт янв 06, 2017 14:57
Сообщения: 365
Благодарил (а): 17 раз.
Поблагодарили: 1 раз.
Ethereal писал(а):
В Old4th с 10-й страницы ошибка :
Код:
FWORD CONV_,"#>",0 ; ( -- addr sz )
dw HLD,@,PAD,OVER,_SUB
FEND
Забыл по DROP скинуть со стека число из которого по # выщипывал цифры и которое больше не нужно.
Спасибо.

А вот какая оказывается особая архитектура в форт-процессорах: MISC - https://dic.academic.ru/dic.nsf/ruwiki/120470


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Моя система(_KROL)
СообщениеДобавлено: Ср дек 06, 2017 00:39 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
_KROL писал(а):
А вот какая оказывается особая архитектура в форт-процессорах: MISC


Это не вполне так. Минималистичность не является непременным атрибутом форт-процессора, это скорее дополнение. К тому же это не микроархитектура, а архитектура системы команд. Вот на ту же тему:

constant cmdNOP : integer := 0;

constant cmdNOT : integer := 1;
constant cmdFETCH : integer := 2;
constant cmdSHL : integer := 3;
constant cmdSHR : integer := 4;
constant cmdSHRA : integer := 5;
constant cmdINPORT : integer := 6;

constant cmdSWAP : integer := 7;

constant cmdDUP : integer := 8;
constant cmdOVER : integer := 9;
constant cmdFROMR : integer := 10;
constant cmdLOOP : integer := 11;
constant cmdSYSREG : integer := 12;

constant cmdPLUS : integer := 13;
constant cmdMINUS : integer := 14;
constant cmdAND : integer := 15;
constant cmdOR : integer := 16;
constant cmdXOR : integer := 17;
constant cmdEQUAL : integer := 18;
constant cmdLESSER : integer := 19;
constant cmdGREATER : integer := 20;
constant cmdMULT : integer := 21;

constant cmdDROP : integer := 22;
constant cmdJMP : integer := 23;
constant cmdCALL : integer := 24;
constant cmdRJMP : integer := 25;
constant cmdTOR : integer := 26;

constant cmdSTORE : integer := 27;
constant cmdDO : integer := 28;

constant cmdRIF : integer := 29;
constant cmdUNTIL : integer := 30;

constant cmdRET : integer := 31;

Те же 32 команды в основном наборе, при 6-битной команде в целом (32 - 63 - это загрузка литералов сдвигом на вершину стека).


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 536 ]  На страницу Пред.  1 ... 21, 22, 23, 24, 25, 26, 27 ... 36  След.

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


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

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


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

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