1

2

ben passer par un registre ^^ (ou alors sauvegarder l'adresse du buffer à une adresse fixe genre vecteur inutilisé, mais c'est assez crade)

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

3

4

ah ok, c pas juste pour ton utilisation personnelle... ben non y a pas vraiment de solution, il faut que la fonction d'initialisation de la lib renvoie une adresse qui sera passée par la suite à toutes les autres fonctions de ta lib sorry (si c'est pour être utilisé en C tu peux te débrouiller en passant par des wrappers qui s'occupent de stocker/passer cette adresse, mais en asm il faut faire la gestion soi-même)

ou alors, si la vitesse n'est pas importante, passer par une entrée avec un nom spécial dans la vat, ou chercher un handle avec une "signature magique"...

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

5

Mastergb avait fait ce qu'il appelait des "librairy read-only" qui permettait ce genre de chose, mais ce n'était que pour les libs perso bien sûr. Va jeter un coup d'oeil à datatolib v2 si ça t'intéresse.
avatar
Que cache le pays des Dieux ? - Forum Ghibli - Forum Littéraire

La fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.

6

7

PpHd, a quand une base de registre ?

8

Faut qu'il vois avec Flanker happy
"De l'Art de faire des Posts qui ne servent a Rien." (c) Ximoon

15:13 @Ximoon - 29-11-2005
"C'est débile ce sondage, une fois de plus Dude, tu ne sers à rien #hehe#" #love# Il est collector celui là ^^

18:56 @Ximoon - 09-10-2010
"Mince Dude sert à quelque chose %) (pas taper :D )" Owii xD #trilove#

9

Ben des que suffisament de monde la demande. Plus serieusement, la lib de Flanker fait tres bien l'affaire pour gerer une pseudo-base de registre.

10

sinon tu peux aussi stocker des trucs au sommet de la pile superviseur à la rigueur (un peu comme les sauvegardes de phoenix)
mais bon c'est un peu gore et surtout pas tout à fait garanti non plus grin

11

(quoi que, en rajoutant une espece de checksum, tu pourrais detecter si tes données sont corrompues ou pas)

12

T'as qu'à faire une lib réentrante et t'auras pas de problèmes......y compris si plusieurs programmes t'utilisent en même temps.
(j'ai horreur des fonctions pas réentrantes)

13

14

15

16

Oh que si. Ca permet d'appeler les fonctions de ta lib depuis une interruption, par exemple.
Ca permet à une autre lib d'utiliser la tienne sans risque de conflit.
De par sa construction, elle n'a pas à écrire dans son code (enfin attention à ne pas générer de relocations) donc peut être conservée en mémoire d'archive.

17

18

Oui, je vois pas trop ce que la réentrance vient faire là-dedans confus

19

Ben si, complètement, ça coïncide pas avec la définition qu'ils donnent sur Wikipédia ? (= segment de code réutilisable par plusieurs processus = pas de relogements autres que vers le code lui-même)

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

20

Mais, le problème est le même que jusqu'à ./11, non ? smile

21

ben, oui, à part que la réentrance exclut les hacks qui utilisent un espace global ^^ (et qu'en plus dans un certain nb de cas, c'est qd même une propriété intéressante à avoir)


EDIT : mais bien sûr, le fait qu'AMS (ou pedrom) ne soit pas réentrant ne garantit pas du tout la réentrance du programme (le moindre HeapAlloc() et tout est par terre), ce qui limite l'utilité d'exposer une interface potentiellement réentrante... à quand quelqu'un pour nous pondre un wrapper réentrant pour le TIOS ? cheeky

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

22

Pour PedroM, tu as les sources.

23

Extended> si la lib est réentrante, et qu'elle n'utilise pas de relogements au runtime, alors elle peut être exécutée depuis une zone mémoire en lecture seule, la réentrance excluant, comme l'a dit Pollux, toute donnée globale ou statique non constante.

Pollux> le problème c'est que dans un environnement non multithreadé, mettre un verrou risque de ne pas être simple à implémenter : si le verrou est déjà posé, que fait ton gestionnaire d'interruption ? (remarque tu me diras au moins il peut le savoir ce qui lui évite de planter tout).

D'un autre côté en environnement non multithreadé, on bénéficie quand même de la possibilité d'avoir plusieurs libs utilisant une autre lib dans le même programme, ce qui est quelque chose qui peut être pratique.

24

spectras
: Pollux> le problème c'est que dans un environnement non multithreadé, mettre un verrou risque de ne pas être simple à implémenter : si le verrou est déjà posé, que fait ton gestionnaire d'interruption ? (remarque tu me diras au moins il peut le savoir ce qui lui évite de planter tout).

C'est facile, à condition bien entendu que les deux processus soient gentils (l'interrompant et l'interrompu), l'interrompant laisse l'interrompu s'exécuter jusqu'à ce que le verrou soit relâché, et à ce moment-là il reprend la main et se fait plaisir... Evidemment, c'est une forme d'"environnement multithreadé" si on veut (puisqu'on repasse temporairement en non-superviseur en attendant que l'autre tâche se termine), mais faut pas déconner, c'est assez trivial... (et ça ne demande aucun effort de scheduling/toussa) Par contre ça rajoute une latence relativement imprédictible, mais ça on ne peut de toute façon pas y échapper...

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