90

si c'est possible, ça serait cool d'avoir un RAM_CALL qui reloge un bout de programme compris entre 2 offsets et avec une base différente de la base réelle.
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

91

Autorises-tu les libraries ?
Je sens que ca va etre chiant cette extension...
C'est pour ca que je te proposais de faire une lib que tu mets complete en TSR
(Tu peux la reloger facilement et la table d'exportation est deja faite).
En + tu peux la compresser avec ton programme.

92

Tu voudrais:
short kernel::RelocPartialProgram (void *program, void *dest, bool reloc_mode, bool allow_lib, unsigned long begin, unsigned long end) ?

93

dans mon idée, les libs dynamiques se trouveraient divisées en 2 catégories : les libs dynamiques standard et les libs dynamiques TSR (dont le nom pourrait commencer par un 0, par exemple, pour qu'elles ne soient jamais trouvées par les kernels ne connaissant pas le format)
et le format 68kL est trop compliqué à mon goût et inadapté à des TSR : la table de relogement/RAM_CALL/ROM_CALL/bss/importation ne sert qu'une fois, à l'installation ; si on la garde, ça fait de la place perdue
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

94

>et le format 68kL est trop compliqué à mon goût et inadapté à des TSR : la table de relogement/RAM_CALL/ROM_CALL/bss/importation ne sert qu'une fois, à l'installation ; si on la garde, ça fait de la place perdue
Le kernel peut l'enlever (D'ailleurs c'est en projet).

95

ça serait quoi, le reloc_mode ? pour reloger/supprimer le relogement ?
sinon, le *dest, mouais. Disons qu'il pointera vers n'importe quoi happy

petit schéma :
[ ****** | ****** | ****** ]    -> programme 68kP d'origine
<- *program pointe ici

|        [ ****** ]          -> morceau recopié en RAM
<- *dest pointe ici

avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

96

Le kernel peut l'enlever (D'ailleurs c'est en projet).

comment ça ?
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

97

Et que dis-tu de:

Reloc2 (void *src, void *dest, void *code, void *lower, void *upper, bool mode);

avec:
+ src: Le code a patcher (Lecture des offsets).
+ dest: Ou reloger.
+ code: addresse de debut de la section (Peut etre different de dest).
+ lower: Addresse minimale
+ upper: Addresse maximale.

Un programme kernel serait relogee par:
Reloc2(src, src, src, src, src+65536, RELOC_MODE);
?

98

> sinon, le *dest, mouais. Disons qu'il pointera vers n'importe quo
Oui smile

99

ça sert à quoi le booléen ?
je ne vois pas bien la différence entre dest et code hum
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

100

src est l'endroit ou on lit les offset.
dest est l'endroit ou on patche le code de section
code est l'endroit de debut de la section.

Ca me servira pour les FlashApps (qui doivent etre reloger en RAM avant d'etre envoye ne ROM).

101

bon bah ça me va alors smile
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

102

Je sais pas si je le ferais grin

103

Un kernel::RestorerVector ? non?
Sinon les TSR kernel sa pourrais me servir pour TIM, si je trouve le courage de m'y remettre cet été
avatar

104

Explicite ce que tu veux.

105

Pour PreOS fait bien une sauvegarde de la table des vecteur non? un RestorerVector(numero_de_vecteur) ca éviterait au programmeur fénéant de faire une sauvegarde lui même wink
Si je dis une connerie désolé je me suis jamais penché de près vur les vecteurs.
avatar

106

PpHd
: kernel::GHOST_SPACE (Macro comme ROM_BASE) : Ecriture partout (ie dans les vecteurs).

Niet! Il y a une méthode propre (bclr.b #2,$600001), c'est celle qu'il vaut encourager! Que feras-tu si le prochain modèle n'a plus du tout de ghost space? roll

Et Flanker, je ne comprends pas pourquoi tu t'obstines à vouloir faire un TSR en kernel! Le _nostub est beaucoup plus adapté!
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

107

alors la RC2 ca sear kan smilesmilesmilesmilesmile ??

108

Le _nostub est beaucoup plus adapté!

Et comment tu peux le savoir ? gol Si je le fais, c'est qu'il y a des raisons
Il y a une méthode propre (bclr.b #2,$600001), c'est celle qu'il vaut encourager!

[troll]d'ailleurs, c'est celle qui a toujours été prônée par la tigcc team[/troll] j'ai toujours utilisé cette méthode, personnellement.
je suis à peu près d'accord avec toi. (cf. plus bas)
Que feras-tu si le prochain modèle n'a plus du tout de ghost space?

il fera bclr.b #2,$600001 (j'ai déjà soulevé cet argument)

cerede > quand elle sortira grin
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

109

./105: Je ne comprends pas ce que tu veux. Regarde bien ce que fais RegisterVector. Il enregistre un vecteur dans la copie interne de PreOS.
Je me demande d'ailleurs s'il doit aussi l'activer (ie le copier dans les vecteurs reels ?).

>Niet! Il y a une méthode propre (bclr.b #2,$600001), c'est celle qu'il vaut encourager!
>Que feras-tu si le prochain modèle n'a plus du tout de ghost space?
roll Tu crois que je n'y ai pas pense ?
J'ai le choix entre:
+ Executer le programme entierement avec la protection ecriture desactive.
+ Mettre ghost space a une adresse impaire et intercepter les adress error.
+ Intercepter les stack overflow et les reinterpreter correctement.
tongue

./107: When it's done, of course ! lol

110

qu'en sera-t-il de ma proposition pour les libs-TSR ? ça permettrait aux programmes kernels standards de les utiliser également, non ?
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

111

Il faut que tu revoies ta methode pour clarifier clairement ce que doit faire tsrlib.

                                Liens?          Liens?
INSTALLEUR TSR   <--> TSRLIB <--> Preos

112

pencil ( Ensuite, pour l'utilité, euh.... grin)
Je suis tel la fleur du lotus.
Bien que naissant de la boue,
aucune boue n'y adhère.

113

De quoi tu parles ? confus

114

PpHd :
>Niet! Il y a une méthode propre (bclr.b #2,$600001), c'est celle qu'il vaut encourager!
>Que feras-tu si le prochain modèle n'a plus du tout de ghost space?
roll Tu crois que je n'y ai pas pense ?
J'ai le choix entre:
+ Executer le programme entierement avec la protection ecriture desactive.
+ Mettre ghost space a une adresse impaire et intercepter les adress error.
+ Intercepter les stack overflow et les reinterpreter correctement.
tongue

Euh, ton enthousiasme me paraît un peu exagéré... C'est très loin d'être trivial de faire un truc qui intercepte tout ça :
* le PC est mis à la position qu'il aurait dans l'instruction suivante, et pas à la position de l'instruction précédente, donc c'est pas vraiment viable de désassembler l'instruction courante (et accessoirement, c'est plutôt difficile)
* au cas où tu voudrais faire dans les solutions gores, tu ne peux pas imposer au programme appelant d'utiliser ton adresse uniquement comme adresse absolue et de ne pas la stocker pour un usage ultérieur... comment gérer
 lea ghost_space+42,a0
 move.l a0,my_ghost
 ...
 move.l my_ghost,a1
 lea 8(a1),a2
 addq.l #2,(a2)

?

Ce n'est même pas que ce serait long/gros de faire un désassembleur (même si ça l'est), mais c'est même théoriquement impossible de détecter de manière non-ambiguë quelle était l'instruction précédente...

Pour le coup, Kevin a raison et il faudrait utiliser le port I/O pour désactiver temporairement la protection.

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

115

 lea ghost_space+42,a0 
 move.l a0,my_ghost 
 ... 
 move.l my_ghost,a1 
 lea 8(a1),a2 
 addq.l #2,(a2)

Tu as lu la doc de kernel::GHOST_SPACE ? Non, donc tu sais pas que ce code n'est pas autorise.

116

PpHd :
>Niet! Il y a une méthode propre (bclr.b #2,$600001), c'est celle qu'il vaut encourager!
>Que feras-tu si le prochain modèle n'a plus du tout de ghost space?
roll Tu crois que je n'y ai pas pense ?
J'ai le choix entre:
+ Executer le programme entierement avec la protection ecriture desactive.
+ Mettre ghost space a une adresse impaire et intercepter les adress error.
+ Intercepter les stack overflow et les reinterpreter correctement.
tongue
Ce n'est pas super propre quand même neutral
Surtout la 1...
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

117

PpHd :
 lea ghost_space+42,a0 
 move.l a0,my_ghost 
 ... 
 move.l my_ghost,a1 
 lea 8(a1),a2 
 addq.l #2,(a2)
Tu as lu la doc de kernel::GHOST_SPACE ? Non, donc tu sais pas que ce code n'est pas autorise.

OK, donc inutilisable en C sad

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

118

Mais si vous voulez pas vous en servir, ne vous en servez pas ! rotfl
On croirait que j'impose son utilisation.

119

#mac#
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

120

 lea ghost_space+42,a0  
 move.l a0,my_ghost  
 ...  
 move.l my_ghost,a1  
 lea 8(a1),a2  
 addq.l #2,(a2) 

Mais oui! Tu as raison. Ca c'est du code C genere pour ecrire dans un vecteur !
#define set_vector(n,ptr) *((volatile unsigned long *)((unsigned long) n + (unsigned long) &GHOST_SPACE)) = ((unsigned long) ptr)

Ca c'est du code C normal pour mettre a jour un vecteur. tongue J'attend avec impatience ta reponse. Je la connais.