Чтобы не писать все в одну тему 
Comdiv писал(а):
А в чём различие в метаданных?
Метаданные в Kernel зависят от размерности указателя. Для 32-бит это:
Код:
      Module* = POINTER TO RECORD [untagged]
         next-: Module;
         opts-: SET;   (* 0..15: compiler opts, 16..31: kernel flags *)
         refcnt-: INTEGER;   (* <0: module invalidated *)
         compTime-, loadTime-: ARRAY 6 OF SHORTINT;
         ext-: INTEGER;   (* currently not used *)
         term-: Command;   (* terminator *)
         nofimps-, nofptrs-: INTEGER;
         csize-, dsize-, rsize-: INTEGER;
         code-, data-, refs-: INTEGER;
         procBase-, varBase-: INTEGER;   (* meta base addresses *)
         names-: POINTER TO ARRAY [untagged] OF SHORTCHAR;   (* names[0] = 0X *)
         ptrs-: POINTER TO ARRAY [untagged] OF INTEGER;
         imports-: POINTER TO ARRAY [untagged] OF Module;
         export-: Directory;   (* exported objects (name sorted) *)
         name-: Utf8Name
      END;
Для 64 бит будет:
Код:
      Module* = POINTER TO RECORD [untagged]
         next-: Module;
         opts-: SET;   (* 0..15: compiler opts, 16..31: kernel flags *)
         refcnt-: INTEGER;   (* <0: module invalidated *)
         compTime-, loadTime-: ARRAY 6 OF SHORTINT;
         ext-: LONGINT;   (* currently not used *)
         term-: Command;   (* terminator *)
         nofimps-, nofptrs-: INTEGER;
         csize-, dsize-, rsize-: LONGINT;
         code-, data-, refs-: LONGINT;
         procBase-, varBase-: LONGINT;   (* meta base addresses *)
         names-: POINTER TO ARRAY [untagged] OF SHORTCHAR;   (* names[0] = 0X *)
         ptrs-: POINTER TO ARRAY [untagged] OF LONGINT;
         imports-: POINTER TO ARRAY [untagged] OF Module;
         export-: Directory;   (* exported objects (name sorted) *)
         name-: Utf8Name
      END;
Поэтому, даже в HelloWorld для 32 бит описание модуля будет типом
Код:
%SYSTEM_MODDESC = type { %SYSTEM_MODDESC*, i32, i32, [6 x i16], [6 x i16], void ()*, void ()*, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [0 x i8]*, [1 x i32]*, [4 x %SYSTEM_MODDESC*]*, %SYSTEM_DIRECTORY*, [256 x i8] } 
А для 64 бит типом
Код:
%SYSTEM_MODDESC = type { %SYSTEM_MODDESC*, i32, i32, [6 x i16], [6 x i16], void ()*, void ()*, i32, i32, i64, i64, i64, i64, i64, i64, i64, i64, [0 x i8]*, [1 x i64]*, [4 x %SYSTEM_MODDESC*]*, %SYSTEM_DIRECTORY*, [256 x i8] }