MDR ^^
(même pas pu voir j'ai envoyé mon PC au SAV là ^^)
ha
)Folco (./1558) :
Sauf que quand on programme efficacement, un saut vers une fonction de lib conditionnelle avec PreOS se résume à un jsr fonction.l si on accepte le smc, ou à un jsr x(an)/jmp (fonction) si on fait du pic.
son dock 57,26 fois plus petit permet de suivre, en always-on-top, à la fois le débogueur et le source.
Kevin Kofler (./1570) :
Pas si on programme en C.
const unsigned char PdtlibFuncs[] =
{
PDTLIB__INIT_CMDLINE,
PDTLIB__MANAGE_ARGS,
PDTLIB__GET_CURRENT_ARG_PTR,
PDTLIB__SKIP_ARGS,
PDTLIB__GET_FILE_PTR,
PDTLIB__CHECK_FILE_TYPE,
0, /* End of table */
0
};
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
}; RegisterFunctionsPtr(&Data, Data.pdtlib, PdtlibFuncs, PdtLibOffsets);
...
if (Data.CheckFileType(CfgFilename, TEXT_TAG, NULL) == 0)
Data.printf(STR_NO_CONFIG_FILE);
else
{
ptr = Data.GetFilePtr(CfgFilename);
}void RegisterFunctionsPtr(SFRAME* Data, LibRef* Descriptor, const unsigned char* Func, const unsigned short* Offset)
{
while ((*Func != 0) || (*(Func + 1) != 0))
{
*(void**)((unsigned long) Data + *Offset) = kernel_LibsPtr(Descriptor, (short) *Func);
Offset ++;
Func ++;
}
}Folco (./1571) :
Et j'aime pas le multi-fenêtre, j'avais particulièrement insisté auprès de Romain pour avoir un dock unique, et il l'avait gentiment fait.
On peut parfaitement calculer les pointeurs de fonction et les appeler comme ça en C.
Folco (./1571) :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 };
Kevin Kofler (./1572) :
(C'est ça la raison technique pour laquelle une seule DLL peut être chargée à la fois.)
Kevin Kofler (./1573) :
Ce code n'est pas du C valide.
Kevin Kofler (./1572) :
Folco (./1571) :Bah, j'ai toujours trouvé que le mode dock sux, je me demande d'ailleurs si je ne devrais pas mettre le multi-fenêtre par défaut dans Emu-TIGCC.
Et j'aime pas le multi-fenêtre, j'avais particulièrement insisté auprès de Romain pour avoir un dock unique, et il l'avait gentiment fait.
Folco (./1574) :
Ah bon ? Une différence de pointeurs c'est interdit ? En tout cas "ça compile" ©,
GoldenCrystal (./1579) :
Ben c'est une grave erreur…Les deb ont le droit, eux…

Kevin Kofler (./1581) :
Super pratique quand tu installes une distribution entière, tu dois être là sans arrêt pour répondre aux questions…
Kevin Kofler (./1581) :
Debconf est une idée totalement pourrie, l'installation non-interactive est un principe indispensable.
Le fait que ça puisse être interactif est une feature de merde ? Sous Debian et dérivés, au moins on peut faire ça, nous.Kevin Kofler (./1580) :
Ça compile où? À l'intérieur d'une fonction?
vince (./1577) :
Il suffit de mettre une question avec deux shotscreens dans l'installeur pour que le premier concerné - l'utilisateur - ait le choix.
On parle du monde de Kevin, là ! Kevin est là pour décider pour lui 

.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) 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 28

(bon il est bien pourri quand même
)
Folco (./1588) :
const char* => la chaine est constante.
char* const => le pointeur de la chaine est constant.
