Board.KolibriOS.org

Official KolibriOS board
It is currently Thu Jun 27, 2019 11:37 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 30 posts ]  Go to page 1 2 Next
Author Message
 Post subject: MPC early beta
PostPosted: Tue Jul 05, 2005 1:24 pm 
Offline
Site Founder
User avatar

Joined: Sun Aug 08, 2004 8:55 am
Posts: 689
Menuet Pascal Compiler - как и обещал, лежит на моём сайте. И как вы обещали - никаких претензий :) Говорить можно только хорошее :P

_________________
in code we trust


Top
   
 Post subject:
PostPosted: Tue Jul 05, 2005 3:22 pm 
Только хорошее? Ну ладно: Молодец! Так держать. Я знал что ты сможешь. =)
А если серьезно. Очень нужная штука, ща буду смотреть.


Top
   
 Post subject:
PostPosted: Wed Jul 06, 2005 9:55 pm 
Offline

Joined: Wed May 18, 2005 7:27 pm
Posts: 1001
Молодец! А список того, что он может, будет включен в следующую версию (типа Menuet Pascal поддерживает такие-то типы переменных, такие-то операции...)?


Top
   
 Post subject:
PostPosted: Sat Jul 09, 2005 1:28 pm 
Offline
Site Founder
User avatar

Joined: Sun Aug 08, 2004 8:55 am
Posts: 689
Wildwest
Не думаю, что будут какие-то принципиальные расхождения со стандартом, так что описывать нужно будет очень мало.


Top
   
 Post subject:
PostPosted: Sat Jul 09, 2005 2:11 pm 
А GUI там можно будет писать?


Top
   
 Post subject:
PostPosted: Sat Jul 09, 2005 2:14 pm 
Offline
Site Founder
User avatar

Joined: Sun Aug 08, 2004 8:55 am
Posts: 689
А что имеется в виду под "писать GUI"? Нельзя ли задавать вопросы конкретнее.


Top
   
 Post subject:
PostPosted: Sat Jul 09, 2005 8:25 pm 
зачем писать собственный компилятор, когда можно портировать FPC или не получится?


Top
   
 Post subject:
PostPosted: Sat Jul 09, 2005 8:28 pm 
только прошу понять меня правильно!
Я нисколько не умаляю работу mike.dld даже рад что наконец-то я могу сделать что-то для MEOS...


Top
   
 Post subject:
PostPosted: Sat Jul 09, 2005 11:14 pm 
Offline

Joined: Wed May 18, 2005 7:27 pm
Posts: 1001
Sniper17
поговори с этим товарищем
http://menuet.2.forumer.com/index.php?showtopic=704


Top
   
 Post subject:
PostPosted: Sun Jul 10, 2005 9:56 am 
Очень хорошая вещь этот MPC, но пока, конечно же сыроватый. Как оказалось на нём можно создавать более или менее сложные проги. Хотя иногда бывают проблемы. Хочу высказать свои наблюдения по его исользованию. Возможно это кому-то поможет в разработке и некоторые из этих проблем будут исправлены в следующих версиях. Возможно что-то из этого - мои глюки, я не гарантирую что это абсолютная истина.
1. Делать var параметры в процедурах бесполезно: компилятор не ругается на них, он просто игнорирует наличие слова var.
2. Есть подозрение, что не поддерживаются слишком длинные имена функций
3. Похоже, что нельзя определить более 8-12(точное число пока не известно) глобальных переменных, иначе у компилятора происходит переполнение стека и он аварийно завершает свою работу
4. Начальное значение for может быть только 0, иначе вообще ничего не происходит (этот вопрос точно не изучен)
5. Если в ассемлерном коде используется локальная перменная или переменная Result, то она должна быть в верхнем регистре и перед ней должно быть “.__” (точка и два подчёркивания). Если это параметр, то он должен быть в верхнем регистре и перед ним должно стоять “__” (два подчёркивания)
6. Строковые константы компилятор как бы распознаёт, но потом подставляет на их место пустую строку
7. В конструкции if then else оператор идущий после then должен отделятся от else точкой с запятой, хотя в других компиляторах паскаля точка с запятой не нужна и не допустима в этом месте
8. В одном месте FASM прицепился к тому, что он не знает переменной .__RESULT, это было в функции
ReadMsg(StrAddr: Integer): Boolean;
Оказывается, если бы функция называлась по-другому то, всё было бы нормально. Видимо слово ReadMsg зарезервировано
9. Если ошибка находится в ассемблерном коде, то компилятор об этом ничего не скажет, а FASM просто тихо не создаст файл. Понять, есть ли ошибки можно только удалением файла .bin и перекомпиляцией. Если файл создался, то ошибок не было.
10. Дельфевские комментарии “//” не поддерживаются. В ассемблерных вставках нельзя использовать ассемблерные комментарии “;” и паскалевские “{…}” отдельно, но можно в комбинации “;{…}”


Top
   
 Post subject:
PostPosted: Sun Jul 10, 2005 5:09 pm 
Offline
Site Founder
User avatar

Joined: Sun Aug 08, 2004 8:55 am
Posts: 689
Sash
Спасибо тебе за исследование, и всем за интерес.

1. Если ты имеешь в виду использование var-параметров в ассемблерных вставках, то при передаче параметра как var фактически передаётся адрес переменной, т.е. для присвоения ей какого-либо значения нужно сделать, например, следующее:
Code:
mov eax,[var_param]
mov [eax],<присваиваемое значение>
. Если имелось в виду не это - уточни.
2. Длина идентификаторов (имён переменных, констант, подпрограмм и т.д.) ограничена 30-ю символами. Планируется увеличение предела или отказ от ограничения вообще.
3. 4. Посмотрю на досуге.
5. Совершенно верно, пока именно так. Текст между asm ... end копируется в выходной файл без изменений, и есть приколы во внутреннем представлении имён идентификаторов. Исправление ситуации планируется.
6. Если имеются в виду непосредственные операдны - проблем замечено не было. Все остальные случаи могут быть связаны с отсутствием типизации (пока что).
7. В курсе этого, не очень мешает при написании программ, но исправлю как можно быстрее.
8. Быть такого не может :)) Хотя не исключено.
9. Думаю сделать статическую линковку FASM.DLL в проекту, тогда ошибки, возвращённые FASM'ом, можно будет обработать в компиляторе.
10. “//” - поддерживаются. В ассемблерных вставках “;” должно работать (сам не проверял, но спец. кода по этому поводу не присутствует).

Далее, приведу выдержки из моего разговора с IPR'ом, чтобы было понятнее, какие ограничения/проблемы сейчас есть:
Quote:
[05.07.2005 12:42:52] >> вложенные процедуры использовать можно, но обращаться к переменным родительских процедур нельзя (не относится к глобальным переменным)
[05.07.2005 12:43:32] >> код лучше писать ПРАВИЛЬНЫЙ, иначе в некоторых случаях может сгенериться неверный асм-листинг
[05.07.2005 12:44:05] >> так как нет типизации, нужно, например, вместо
while true do
писать
while 1 = 1 do
[05.07.2005 12:44:58] >> при объявлении констант или инициализации переменных инициализирующее выражение не должно быть сложным
[05.07.2005 12:45:05] >> т.е. писать 4 вместо 2*2
[05.07.2005 12:46:08] >> инициализация переменных - как по одной, так и группами (всем присваивается инициализирующее значение), например:
var
a: integer = 5; {a = 5 }
b,c,d: integer = 10; { b = c = d = 10 }
[05.07.2005 12:46:24] >> типизированных констант нету (ясно почему :) )
[05.07.2005 12:47:26] >> да, и вместо модулей, используй директиву {$I "имя файла"} (имя в кавычках)

_________________
in code we trust


Top
   
 Post subject:
PostPosted: Mon Jul 11, 2005 12:52 am 
Да, про var параметры я бы и сам мог догадаться


Top
   
 Post subject:
PostPosted: Mon Jul 11, 2005 1:00 am 
Да, мне довольно понравилось. И осуществилась моя мечта нормальный компилер, нормального
языка для меоси. СПАСИБО MIKE.DLD!!!
З.Ы. Удачи в дальнейшем!


Top
   
 Post subject:
PostPosted: Tue Nov 29, 2005 9:02 am 
program sum;
var a,b,c:real;
begin
repeat
readln(a,b);c:=a+b;
Writeln(c);readln
until c=100;
end.
А что не компилирует? :D


Top
   
 Post subject:
PostPosted: Tue Nov 29, 2005 11:05 am 
Offline
Site Founder
User avatar

Joined: Sun Aug 08, 2004 8:55 am
Posts: 689
А в Менуете есть нативная поддержка консоли?


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 30 posts ]  Go to page 1 2 Next

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB® Forum Software © phpBB Limited