Code Monkey home page Code Monkey logo

oberon-07-compiler's Introduction

Oberon-07 compiler

Oberon-07 compiler for x64 (Windows, Linux), x86 (Windows, Linux, KolibriOS), MSP430x{1,2}xx, STM32 Cortex-M3

Links

obGraph

[en]Test graphics possibility
[ru]Тест графических возможностей

additional-modules

[en]Additional modules
[ru]Дополнительные модули

Цели сборки

Linux

make              # Собирает компилятор под Linux x64
make lin64        # -//-
make lin32        # Собирает компилятор под Linux x32
make lin64sample1 # Собирает и запускает пример-1 под Linux x64
make lin64sample2 # Собирает и запускает пример-2 под Linux x64
make win64        # Собирает компилятор под Windows x64
make win32        # Собирает компилятор под Windows x32
make kos          # Собирает компилятор под KolibriOS

oberon-07-compiler's People

Contributors

antkrotov avatar prospero78 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

oberon-07-compiler's Issues

Ридми нету!!

Антон, надо что-нибудь нарисовать. Полезный проект, а ридми нет.
Непорядок!

gorg64_spkplay и Оберон

Попробовал написать свой проигрыватель для стандартного динамика на Обероне.
Декларации для типа Word нашёл, запись сделал, но дальше возникли одни вопросы как сделать ряд вещей. На самом деле плеер невелик по размеру кода, но по системной сложности выше обычного. Ему нужны ioperm, доступ к портам, системные вызовы, обработка сигналов. На доступе к портам уже не нашёл решения. Но может быть к этому не готов сам Оберон в текущей версии ? Или я чего-то не понял ?

https://github.com/galaxysite/gorg64_spkplay
Здесь есть версии на Паскале, ассемблере и Си.
Также есть весь органайзер с этим плеером: http://soft.self-made-free.ru/GORG64_166.tar.xz

Если же он реализуем на Обероне может быть включить его в качестве примера использования наряду с hello и animations. Явно этого не хватает. Сигналы, порты и системные вызовы нужны всегда.

Ошибка компиляции под Linux

walera@walera-lin:~/coding/gowork/src/github.com/prospero78/obGraph$ SelfLinux64.sh
Compiler
index out of range
module: HOST
line: 83
/home/walera/bin/SelfLinux64.sh: строка 2: @pause: команда не найдена

Ошибка при обработке вложенных процедур

Код ниже прекрасно работает. Без указания имени процедуры в завершении процедуры.

PROCEDURE New*(width, height, number :INTEGER):TWindow; (* Возвращает новое окно *)
   VAR
      win   :TWindow;
   PROCEDURE Test;
      BEGIN
         Out.String("test ==================\n")
      END;
   BEGIN
      Test;
      NEW(win);
      win.height := height;
      win.width  := width;
      win.number := number;
      Out.String("test -------------------\n")
      RETURN win
   END New;

Вывод:

. . .
compiling (11) xgraph (SYSTEM)
compiling (12) square (SYSTEM)
compiling (13) Main (SYSTEM)
--------------------------------------------
1716 lines, 0.01 sec, 18664 bytes
./bin/main
test ==================\ntest -------------------\n

Специально сейчас посмотрел у Вирта в сообщении -- там указана форма без имени процедуры после END. Но в словесном описании указано, что имя в конце надо. Технически это ошибка в формальном описании. Думаю что, я это дело подправляю в форме комментариев в своём переводе сообщения.

Трындец... В сообщении нашёл на стр. 10 неправильно оформленный код. И оформлен он существенно не правильно (;)

Execution error after compiling

Dear all, this code was used to compile and receive input of 2 values ​​and add them. However, at the time of execution it generates an error window.

MODULE Soma;

IMPORT In, Out;

VAR
numero1, numero2, resultado: INTEGER;

BEGIN
Out.String("Enter the first number: ");
In.Int(numero1);

Out.String("Enter the second number: ");
In.Int(numero2);

resultado := numero1 + numero2;

Out.String("A soma é: ");
Out.Int(resultado, 0);
Out.Ln;
END Soma.

Error

Дополнительные модули для компилятора

Здравствуйте!
Могу ли я предложить Вам дополнительные модули для Вашего превосходного компилятора?
https://github.com/VadimAnIsaev/Oberon-07-additional-modules

  • CMath.ob07 - комплексные числа;
  • MathBits.ob07 - побитовые операции для целых чисел;
  • MathExt.ob07 - дополнительные функции общего вида;
  • MathRound.ob07 - дополнительные функции округления;
  • MathStat.ob07 - дополнительные функции, статистика;
  • Rand.ob07 - простой генератор какбыслучайных чисел, алгоритм Лемера;
  • RandExt.ob07 - дополнительные генераторы какбыслучайных чисел:
    - алгоритм 133б из Comm ACM 5,10 (Oct 1962) 553;
    - алгоритм mrg32k3a;
    - алгоритм MT19937 (Мерсена-Твистера).

Случались ли ложноположительные срабатывания антивирусов?

Сожалею, что пришлось открыть Issue, но не знаю других способов связаться.
Сталкивались ли вы с ложноположительным срабатыванием антивирусов на программах, откомпилированных вашим компилятором? Я разрабатываю свой любительский компилятор (https://github.com/vtereshkov/xdpw), и эта проблема с антивирусом AVG мне иногда досаждает.

New functions and native modules.

Hello!
Thinking about expanding the functionalities, I imagine there is something related to new modules for the language such as:
*If any module suggestions already exist, you may have a separate folder of examples. This helps the adoption of the language.
The more examples the better.

1 - File manipulation module (read files, write files, delete files, search files, create directories, delete directories);
2 - Module with time, date, year function;
3 - Module for windows Gui (Windows, buttons, menus, message box);
4 - Text Window Gui Module console and Color function in the console and text mode windows;

Does your compiler support the functions of pure version 7 of Oberon? We can conclude this.
And in this case, is it a natural compiler or does it make a transpiler for C. And does it use GCC to compile the .c into .exe?
I note that we need a bunch of additional examples.

Thank you for your work. This above is a suggestion for improvement.

Ошибка при записи файла Linux

PROCEDURE FileWrite():BOOLEAN;
	VAR
		strAdr: INTEGER;
		res: INTEGER;
		ind: INTEGER;
	BEGIN
		isErr:=FALSE;
		strToWrite:="Проверка текста";
		strAdr:=SYSTEM.ADR(strToWrite[0]);
		res:=File.Write(fileID, strAdr, SYSTEM.SIZE(WCHAR));
		IF res # 0 THEN
			Out.String("Main.FileWrite(): bad write file"); Out.Ln();
			isErr:=TRUE;
		END;
		RETURN isErr
	END FileWrite;

Что-то идёт не так. Даже одну литеру записать не могу.

Алиасы типов

При попытке создать алиас INTEGER и использовать его в присвоении -- присвоение происходит без приведения алиаса к INTEGER.

Кастинг по типу или я туплю?

  1. Сделал базовый тип
  2. Сделал производный тип от базового
  3. Сделал тип указатель на производный тип
  4. В процедуру требую указатель на базовый тип, передаю указатель на производный тип.
  5. Компилятор сходит с ума. assertion failure, module PROG, line 486.
    Если это правильное поведение, тогда кастинг по производным типам из базового в компиляторе невозможен?
    Сделал передачу напрямую производного типа -- результат тот же.

Спасибо за Oberon07

Хочу сказать огромное спасибо за отличный компилятор, поддержку KolibriOS и удобную читалку FB2Reader!

Я обновил Oberon07 на svn://kolibrios.org и добавил ссылку на данный репозитарий.
Если будет время, было бы клево увидеть авто-определение кодировки в FB2Reader, и совсем уж хорошо - поиск.

С уважением,
Кирилл

Ошибка компиляции

при компиляции базового примера получаю следующую ошибку.

C:\Users\af.gorbunov\Documents\code\oberon\oberon-07-compiler>Compiler.exe "C:\Users\af.gorbunov\Documents\code\oberon\oberon-07-compiler\samples\Windows32\HelloRus.ob07" "C:\Users\af.gorbunov\Documents\code\oberon\oberon-07-compiler\samples\Windows32\HelloRus.exe" console64
compiling API (SYSTEM)
compiling RTL (SYSTEM)

  error (3:8) module not found
  file:  C:\Users\af.gorbunov\Documents\code\oberon\oberon-07-compiler\samples\Windows32\HelloRus.ob07

На сколько я понимаю, проблема может быть в том, что путь содержит точку. Так ли это?

Command line compiler reports not finding lib.

Test in the Windows console, using the command line, and adding compiler.exe to the path. It informs you with a warning that it cannot find a file and therefore does not compile it.

1 - Compiler.exe Prog.ob07 win64con -out Prog.exe
A - Akron Oberon Compiler v1.66 (64-bit) 10-feb-2023
Copyright (c) 2018-2023, Anton Krotov

file C:\temp\oberon07\samples\Windows\hello\lib\Windows\RTL.ob07 not found

but,

1 - C:\temp\oberon07>Compiler.exe c:\temp\oberon07\samples\Windows\hello\Prog1.ob07 win64con -out C:\temp\oberon07\samples\Windows\hello\Prog1.exe

Akron Oberon Compiler v1.66 (64-bit) 10-feb-2023
Copyright (c) 2018-2023, Anton Krotov

compiling (1) API (SYSTEM)
compiling (2) RTL (SYSTEM)
compiling (3) Out (SYSTEM)
compiling (4) Prog1

780 lines, 0.00 sec, 7168 bytes

If you pass the complete path line, it compiles. But in the case if only the place where the code to be compiled is, it cannot find the lib and does not compile. Is there a way to adjust this?

thanks

PIE

Возможно ли сделать в Линуксе компиляцию в PIE ? Этого давно требуют пакетные менеджеры дистрибутивов. Иной формат исполняемых файлов ругает lintian.

И есть ли планы сделать графическую среду ? Портировать на Оберон https://github.com/mse-org/mseide-msegui или создать что-то своё наподобие.

Ошибка в разборе полей типа?

Есть вот такой код:
`
tSession = RECORD

		session:   ARRAY lenStrSession OF WCHAR;

		base_path: ARRAY lenBasePath OF CHAR;

		time_get:  ARRAY lenTimeBegin OF CHAR

	END;

`
Если в конце последнего поля типа поставить ";" -- компиляция не проходит. Это разве правильно?

Помощь в разработке

Антон, приветствую уважаемый!)
Чем могу помочь?)
Лицензия BSD-2 радует безмерно))

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.