mirror of
https://github.com/vishapoberon/compiler.git
synced 2026-04-05 23:22:25 +00:00
ulmEvents.Mod does not use C/asm code anymore. getaddr code procedure is
replaced by more correct SYSTEM.VAL calls. added Readme and FAQ
This commit is contained in:
parent
e81c21e56f
commit
0d9024e4ae
3 changed files with 55 additions and 12 deletions
11
FAQ
Normal file
11
FAQ
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
|
||||
==compiler does show only character position, not the line number==
|
||||
|
||||
Yes, by default it shows you the character position, because it's faster to go to character position in vim
|
||||
:goto number
|
||||
|
||||
In case you still want to use line numbers then pass -l option to voc
|
||||
|
||||
voc -ls m.Mod
|
||||
|
||||
31
README.md
31
README.md
|
|
@ -2,3 +2,34 @@ voc
|
|||
===
|
||||
|
||||
vishap oberon compiler
|
||||
|
||||
How to install - see COMPILE file.
|
||||
|
||||
How to use:
|
||||
|
||||
Type voc and it'll show you help.
|
||||
|
||||
voc -M will compile your module and link it statically to libVishapOberon.
|
||||
voc -m will link the module dynamically.
|
||||
|
||||
If you have more than one module, and you want them to be compiled into elf filethen:
|
||||
Let's assume we have module M0 which imports M1;
|
||||
|
||||
voc -l M1.Mod -s M0.Mod -M
|
||||
|
||||
Here -l is a global option.
|
||||
Module M1 will be compiled with -s option, i. e. sym file will be generated.
|
||||
|
||||
Module M0 will be compiled and linked statically.
|
||||
|
||||
In case you have modules in different directories, like "ui", "logic", "math", then you need to export MODULES environment variable like this:
|
||||
|
||||
export MODULES=".:ui:logic:math"
|
||||
|
||||
and after call voc
|
||||
|
||||
voc -s ui0.Mod
|
||||
|
||||
Otherwise you can use full path:
|
||||
|
||||
voc -s ui/ui0.Mod
|
||||
|
|
|
|||
|
|
@ -294,22 +294,20 @@ MODULE ulmEvents;
|
|||
loghandler := log;
|
||||
END GetLog;
|
||||
|
||||
(* noch *)
|
||||
PROCEDURE -getaddr(handler: EventHandler): LONGINT
|
||||
"(LONGINT)&handler";
|
||||
|
||||
PROCEDURE NilHandler*(event: Event);
|
||||
(* an empty event handler *)
|
||||
END NilHandler;
|
||||
|
||||
(* now QueueHandler will translate partly like
|
||||
i = (long)&handler;
|
||||
j = (long)&ulmEvents_NilHandler;
|
||||
b = i != j;
|
||||
if (!(b)) {SYSTEM_assert = 0; SYSTEM_HALT(-1);};
|
||||
|
||||
; noch
|
||||
BOOLEAN b;
|
||||
handler_EventHandler tmphandler;
|
||||
LONGINT i, j;
|
||||
i = (LONGINT)handler;
|
||||
tmphandler = handler_NilHandler;
|
||||
j = (LONGINT)tmphandler;
|
||||
b = i != j;
|
||||
*)
|
||||
(* changed because voc cannot compara handler and NilHandler -- noch *)
|
||||
|
||||
PROCEDURE QueueHandler*(handler: EventHandler);
|
||||
(* setup an alternative handler of events
|
||||
|
|
@ -317,11 +315,14 @@ MODULE ulmEvents;
|
|||
of their unsufficient priority
|
||||
*)
|
||||
VAR b : BOOLEAN; (* noch *)
|
||||
tmphandler : EventHandler;
|
||||
i,j : LONGINT;
|
||||
BEGIN
|
||||
i := getaddr(handler);
|
||||
j := getaddr(NilHandler);
|
||||
i := SYSTEM.VAL(LONGINT, handler);
|
||||
tmphandler := NilHandler;
|
||||
j := SYSTEM.VAL(LONGINT, tmphandler);
|
||||
b := i # j;
|
||||
b := handler # tmphandler;
|
||||
(*ASSERT (handler # NilHandler);*)
|
||||
ASSERT(b);
|
||||
queueHandler := handler;
|
||||
Loading…
Add table
Add a link
Reference in a new issue