Han, j'aurais jamais dû regarde ce code bordel !!!
const char CfgFilename[] = "system\as";=>
.LC0:
.ascii "system\as\0"
...
move.b .LC0,(%a4)
move.b .LC0+1,83(%sp)
move.b .LC0+2,84(%sp)
move.b .LC0+3,85(%sp)
move.b .LC0+4,86(%sp)
move.b .LC0+5,87(%sp)
move.b .LC0+6,88(%sp)
move.b .LC0+7,89(%sp)
move.b .LC0+8,90(%sp)
move.b .LC0+9,91(%sp)Mais que fait GCC ???

Et sinon :
const unsigned short PdtLibOffsets[] =
{
(unsigned long)&Data.InitCmdline - (unsigned long)&Data,
(unsigned long)&Data.ManageArgs - (unsigned long)&Data,
(unsigned long)&Data.GetCurrentArgPtr - (unsigned long)&Data,
(unsigned long)&Data.SkipArgs - (unsigned long)&Data,
(unsigned long)&Data.GetFilePtr - (unsigned long)&Data,
(unsigned long)&Data.CheckFileType - (unsigned long)&Data
};typedef struct SFRAME
{
void (*InitCmdline) (CMDLINE* CmdLine, int argc, const char** argv);
int (*ManageArgs) (CMDLINE* CmdLine, void* Data, const char* OptList, int (*Callback)(void* Data, int Status),
void (*SwitchFunc)(void* Data, char Sign), ...);
const char* (*GetCurrentArgPtr) (CMDLINE* CmdLine);
void (*SkipArgs) (CMDLINE* CmdLine, int NumArgs);
FILE* stderr;
void (*printf) (const char* format, ...);
short (*fprintf) (FILE *stream, const char* format, ...);
int (*CheckFileType) (const char* Filename, unsigned char Type, const char* CustomType);
void* (*GetFilePtr) (const char* Filename);
LibRef* syslib;
LibRef* pdtlib;
CMDLINE Cmdline;
long GlobalFlags;
long FileFlags;
long* CurrentFlags;
} SFRAME;=>
PdtLibOffsets.5157:
.word 0
.word 4
.word 8
.word 12
.word 32
.word 28Ca marche.

Résumé -> Les libs conditionnelles sont parfaitement exploitables en asm et en C, de manière optimale.
Oserais-je ? Non, c'est trop gros. Rah pourtant... hmmm je me tâte... oué, pas trop longtemps... allez, déconnons sec \o/Désolé de t'apprendre le C mon cher
