11Fermer13
deleted2Le 13/04/2013 à 14:05
PpHd (./10) :
on peut très bien appeler LibPtr pour remplir une table d'appel indirect, et passer cette table aux autre modules...

Tout à fait, et c'est ce que je fais sous PedroM
code
;===============================================================================
;
;       pdtlib::InstallTrampolines
;
;       in      a0      char*    LibName
;               d1.b    char     LibVersion
;               a1      short [] FunctionsTable
;               a2      short [] OffsetsTable
;               a3      void*    TrampolinesTableBase
;
;       out     a0      LibRef* Descriptor
;
;       destroy d0
;
;       Open the library LibName, checking that is version is >= LibVersion.
;       Return LibRef if installation is successful, else NULL
;
;       For each element of FunctionsTable, create a trampoline (actually a
;       "jmp Function").
;       FunctionsTable must ends with a negative value.
;
;       For each trampoline created for FunctionsTable [x], 6 bytes will be used
;       at TrampolinesTableBase + OffsetTable [x].
;       These entries need not to be packed
;
;===============================================================================

pdtlib@0004:
        RAMT    RAM_kernel::LibsBegin
        move.l  a0,d0
        beq.s   \Fail
        movem.l a0-a2,-(sp)

\Loop:  movea.l (sp),a0
        move.w  (a1)+,d0
        bmi.s   \EOT

        RAMT    RAM_kernel::LibsPtr
        move.w  (a2)+,d0
        move.w  #$4EF9,0(a3,d0.w)               ; jmp ...
        move.l  a0,2(a3,d0.w)                   ; ... imm.l
        bne.s   \Loop

                movea.l (sp),a0                 ; Function not found
                RAMT    RAM_kernel::LibsEnd
                clr.l   (sp)

\EOT:   movem.l (sp)+,a0-a2
\Fail:  rts

Le truc, c'est que ce code dans un programme ro, c'est du pedrom-only, ça n'a aucune raison d'être sous AMS, puisque que dans l'état actuel, ça ne peut pas marcher. Donc un programme qui fait ça sait ce qu'il fait, et il n'a qu'à mettre en application ce que j'ai posté à la fin de ./5.
PpHd (./10) :
Pourquoi ne pas l'ajouter dans hw3patch?

Ca, je crois que c'est la solution ultime love
Plus aucun problème, plus rien à modifier ! smile