Forth http://fforum.winglion.ru/ |
|
SPF/Linux http://fforum.winglion.ru/viewtopic.php?f=18&t=800 |
Страница 8 из 10 |
Автор: | VoidVolker [ Пн авг 19, 2013 22:46 ] |
Заголовок сообщения: | Re: SPF/Linux |
Нету */MOD и */. А еще и локалсов нет. |
Автор: | Mihail [ Пн авг 19, 2013 23:14 ] |
Заголовок сообщения: | Re: SPF/Linux |
VoidVolker писал(а): Mihail писал(а): Суффикс d не нужен (наследие 32-разрядности)в r14d нудно записать А как? Можно пример? Код: fdef("TlsIndex!",9,0,TlsIndexSet)
mov %rax,%r14 jmp DROP |
Автор: | VoidVolker [ Пн авг 19, 2013 23:18 ] |
Заголовок сообщения: | Re: SPF/Linux |
Регулярно выдает "Ошибка сегментирования" - как отловить что и где виновато? |
Автор: | VoidVolker [ Вт авг 20, 2013 11:58 ] |
Заголовок сообщения: | Re: SPF/Linux |
Код: 131048 ALLOCATE THROW VALUE m1 m1 @ . 0 Ok 131049 ALLOCATE THROW VALUE m2 m2 @ . Ошибка сегментирования Вот такая бяка вылезла: при попытке доступа к выделенной памяти более определенного объема приводит к ошибке доступа. Mihail писал(а): Суффикс d не нужен (наследие 32-разрядности) Код: fdef("_TOUSER-VALUE-CODE",0x12 ,0 ,_TOUSERsubVALUEsubCODE) ... add %r14d,%ebx ... А тут? Лишний суффикс? |
Автор: | Mihail [ Вт авг 20, 2013 12:13 ] |
Заголовок сообщения: | Re: SPF/Linux |
VoidVolker писал(а): Код: fdef("_TOUSER-VALUE-CODE",0x12 ,0 ,_TOUSERsubVALUEsubCODE) ... add %r14d,%ebx ... А тут? Лишний суффикс? По моему, везде надо удалить. И не ebx, а rbx. Думаю, из-за 32-х разрядных хвостов и глючит. |
Автор: | VoidVolker [ Вт авг 20, 2013 12:34 ] |
Заголовок сообщения: | Re: SPF/Linux |
Только там и был суффикс. Поменял - но все равно постоянно валится с этой ошибкой. Можно ли как-то локализовать? Оно же совсем никакой жизни не дает ( А еще ошибка сегментирования часто вываливается на неизвестных словах. Может где-то в алгоритме поиска засел баг? |
Автор: | Mihail [ Вт авг 20, 2013 13:44 ] |
Заголовок сообщения: | Re: SPF/Linux |
VoidVolker писал(а): Можно ли как-то локализовать? Судя по Код: 131048 ALLOCATE THROW VALUE m1 m1 @ . Ошибка в VALUE.0 Ok 131049 ALLOCATE THROW VALUE m2 m2 @ . Ошибка сегментирования В _USER-VALUE-CODE 32-х разрядный eax Попробуй Код: fdef("_USER-VALUE-CODE",0x10 ,0 ,_USERsubVALUEsubCODE) lea -4*2(%rbp),%rbp mov %rax,(%rbp) pop %rax mov (%rax),%rax add %r14,%rax mov (%rax),%rax retq Код: fdef("_VALUE-CODE",0xB ,0 ,_VALUEsubCODE)
lea -4*2(%rbp),%rbp mov %rax,(%rbp) pop %rax mov (%rax),%rax retq |
Автор: | VoidVolker [ Вт авг 20, 2013 15:10 ] |
Заголовок сообщения: | Re: SPF/Linux |
Первая правка вообще ломает - сразу же при запуске вылетает, а вторая - только после нажатия на энтер. А так да, действительно VALUE переменные тупят - они почему-то 32-битные. Но глюк возникает, именно при попытке извлечения значения по адресу. Во, нашел еще один баг: Код: 0x1122334455667788 Ok . 55667788 Ok При этом: Код: 0x1122334455667788 . 1122334455667788 Ok Т.о. вершина стека искажается при переходе на новую строку. Хмхм: src\compiler:118 Код: : VALUE ( x "<spaces>name" -- ) \ 94 CORE EXT \ Пропустить ведущие пробелы. Выделить name, ограниченное пробелом. Создать \ определение для name с семантикой выполнения, определенной ниже, с начальным \ значением равным x. \ name используется как "значение". \ Выполнение: ( -- x ) \ Положить x на стек. Значение x - то, которое было дано, когда имя создавалось, \ пока не исполнится фраза x TO name, задав новое значение x, \ ассоциированное с name. HEADER VALUE-CODE COMPILE, L, TOVALUE-CODE COMPILE, ; : VECT ( -> ) ( создать слово, семантику выполнения которого можно менять, записывая в него новый xt по TO) HEADER VECT-CODE COMPILE, ['] NOOP L, TOVALUE-CODE COMPILE, ; ... : USER-CREATE ( "<spaces>name" -- ) HEADER HERE DOES>A ! ( ??? DOES ) USER-CODE COMPILE, USER-ALIGNED USER-ALLOT L, ; А вот тут наверно баги сидят? Правильно? И таки что надо сделать, чтобы можно было менять исходники без поломки всего и вся? |
Автор: | Mihail [ Вт авг 20, 2013 15:30 ] |
Заголовок сообщения: | Re: SPF/Linux |
VoidVolker писал(а): Первая правка вообще ломает - сразу же при запуске вылетает, а вторая - только после нажатия на энтер. Там поле .int, а надо .quad . 32-х разрядных регистров навалом. В общем, можно считать система неработающая. |
Автор: | VoidVolker [ Вт авг 20, 2013 15:54 ] |
Заголовок сообщения: | Re: SPF/Linux |
Mihail писал(а): Там поле .int, а надо .quad . 32-х разрядных регистров навалом. Где? Mihail писал(а): В общем, можно считать система неработающая. Это как так? Вообще что ли? Да ладно, вон gForth-то работает же. И тут немного допилить и будет тоже работать. |
Автор: | Hishnik [ Вт авг 20, 2013 16:03 ] |
Заголовок сообщения: | Re: SPF/Linux |
VoidVolker писал(а): И тут немного допилить и будет тоже работать. Есть такое страшное слово "планирование". Потому что если только кодировать, то и навалятся баги со всех сторон. |
Автор: | VoidVolker [ Вт авг 20, 2013 16:17 ] |
Заголовок сообщения: | Re: SPF/Linux |
Хищник писал(а): VoidVolker писал(а): И тут немного допилить и будет тоже работать. Есть такое страшное слово "планирование". Потому что если только кодировать, то и навалятся баги со всех сторон. Я планирую использовать спф64 в реальных приложениях для линукс. А чтоб его использовать - надо сначала хоть немного допилить, а далее, по мере использования будет создаваться новый функционал. |
Автор: | Mihail [ Вт авг 20, 2013 17:34 ] |
Заголовок сообщения: | Re: SPF/Linux |
VoidVolker писал(а): И тут немного допилить и будет тоже работать. Здесь может оказаться не все так просто. Система собирается с помощью 32-х разрядной форт-системы путем компиляции нецелевым компилятором с дальнейшем дизассемблированием и подачей на вход 64-х разрядному ассемблеру. Дойду до дома, посмотрю что можно сделать. (Ubuntu64 у меня только дома). Хищник писал(а): Есть такое страшное слово "планирование". Потому что если только кодировать, то и навалятся баги со всех сторон. Все действие человека, кроме рефлекторных, запланированы. Ошибки следствие рассеянности. Это плата за глубину абстрагирования. Изложение плана и есть кодирование. |
Автор: | VoidVolker [ Вт авг 20, 2013 17:59 ] |
Заголовок сообщения: | Re: SPF/Linux |
Mihail писал(а): VoidVolker писал(а): И тут немного допилить и будет тоже работать. Здесь может оказаться не все так просто. Система собирается с помощью 32-х разрядной форт-системы путем компиляции нецелевым компилятором с дальнейшем дизассемблированием и подачей на вход 64-х разрядному ассемблеру. Дойду до дома, посмотрю что можно сделать. (Ubuntu64 у меня только дома). Хорошо. А как на счет варианта собирать с помощью gforth х64? У него же исходники открытые - может быть имеет смысл выкинуть из него все, без чего он может работать, и далее от этого строить спф? Или слишком ресурсоемко будет? |
Автор: | Hishnik [ Вт авг 20, 2013 19:42 ] |
Заголовок сообщения: | Re: SPF/Linux |
Mihail писал(а): Все действие человека, кроме рефлекторных, запланированы. Ошибки следствие рассеянности. Это плата за глубину абстрагирования. Изложение плана и есть кодирование. Если так, то: Mihail писал(а): Здесь может оказаться не все так просто. Система собирается с помощью ... откуда? Это те самые ошибки, которые следствие рассеянности? Значит, надо с этим как-то работать. Собственно, те, кто упорно хочет "просто писать код" доходят до потолка - того объема, который человек может одновременно удерживать в голове. Дальше все затуманивается, 32 и 64 бита путаются, регистры забывают инициализироваться и т.п. В итоге получается, что пока это кто-то не проверит, ошибки будут множиться (и при этом будут множиться ссылки "я написал новую версию").
|
Страница 8 из 10 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |