| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- MODULE Hello;
- IMPORT SYSTEM, Libdl, Args;
- VAR
- libc: INTEGER;
- puts: PROCEDURE [linux] (pStr: INTEGER);
- PROCEDURE OutStringLn (s: ARRAY OF CHAR);
- BEGIN
- puts(SYSTEM.ADR(s[0]))
- END OutStringLn;
- PROCEDURE main;
- VAR
- i: INTEGER;
- s: ARRAY 80 OF CHAR;
- BEGIN
- OutStringLn("Hello");
- OutStringLn("");
- i := 0;
- WHILE i < Args.argc DO
- Args.GetArg(i, s);
- INC(i);
- OutStringLn(s)
- END;
- OutStringLn("");
- i := 0;
- WHILE i < Args.envc DO
- Args.GetEnv(i, s);
- INC(i);
- OutStringLn(s)
- END;
- OutStringLn("");
- OutStringLn("Bye")
- END main;
- BEGIN
- libc := Libdl.open("libc.so.6", Libdl.LAZY);
- SYSTEM.PUT(SYSTEM.ADR(puts), Libdl.sym(libc, "puts"));
- ASSERT(puts # NIL);
- main
- END Hello.
|