Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
813 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  methodes virtuels et temps reel

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

methodes virtuels et temps reel

n°938709
fabyyyy
Posté le 06-01-2005 à 03:09:45  profilanswer
 

Bonjour, j'ai quelques questions qui me bloquent :
 
les voici :
Est ce que le garbage collector est pertinent dans un jeux de strategie en temps reel ?
 
Comment un compilateur c++ implemente un appel a une fonction virtuelle ?
 
Voila merci d'avance pour vos reponses !

mood
Publicité
Posté le 06-01-2005 à 03:09:45  profilanswer
 

n°938715
Lam's
Profil: bas.
Posté le 06-01-2005 à 07:20:58  profilanswer
 

Pourquoi un garbage collector et pas du reference counting, avec suppression immédiate ou retardée ? En gros: tu notes tous les objets dont tu sais que tu n'auras plus besoin, et 2 secondes plus tard, tu fais le grand nettoyage. C'est pratique lorsque tu as besoin d'effacer un objet, mais que tu sais qu'il y en a 2 ou 3 autres qui l'ont encore dans leurs dépendances.
 
Sinon, pour les fonctions virtuelles, ça dépend des environnements bien sûr. Mais en gros:
 
Chaque objet a un "champ" supplémentaire qui est le pointeur vers sa VTable. Cela permet d'effectuer toute sorte de manip sur la RTTI, et cela permet surtout de connaître l'addresse des fonctions virtuelles.
 
Il n'y a qu'une VTable en mémoire par classe. Et cette VTable n'est rien d'autre qu'un tableau de pointeurs sur fonctions membres.
 
Un compilo en 32 bits peut du coup implémenter un appel en:

load registre1, adress_vTable
jump [registre1+function_index_in_vTable*4]


 
Il y a donc un déréférencement en plus par rapport à une fonction normale. Certaines archis ont d'ailleurs des instructions spécialisées pour faire ça (ça simplifie le code, mais ça n'enlève pas le double-accès mémoire...).

n°938735
cricri_
Posté le 06-01-2005 à 08:31:51  profilanswer
 

t'es sûr ?
me rappele pas bien mais le RTTI c'est pour le dynamic_cast pour moi ... qqchose comme le real time type ...  

n°938740
Panini
Posté le 06-01-2005 à 08:42:15  profilanswer
 

Il faut même mieux éviter toute allocation pendant la trame de jeu, ça coûte réellement cher. Si tu as besoin d'allocation "temps réel", utilise plutôt des pools, c'est plus efficace.
Sinon +1 sur toute la ligne avec Lam's.

n°938741
Lam's
Profil: bas.
Posté le 06-01-2005 à 08:47:58  profilanswer
 

cricri_ a écrit :

t'es sûr ?
me rappele pas bien mais le RTTI c'est pour le dynamic_cast pour moi ... qqchose comme le real time type ...


En fait, j'ai menti (mais c'était pour simplifier). Une VTtable n'est généralement pas qu'un tableau de pointeurs, elle contient aussi les infos sur ta classe (donc, pointeur vers les vtables des classes dont elle dérive, nom de la classe, etc.). C'est ce qui permet de faire les dynamic_casts et les type_info...
 
Anecdote: Pour avoir une idée de la gueule des VTables de Visual C++, il suffit juste... de regarder le standard COM. En effet, Microsoft ne s'est pas embété, et s'est contenter de faire un mapping entre le format binaire des interfaces COM et le format des VTables générées pas VC++. C'est pour ça que DirectX (entre autres) est si rapide ;)

n°938749
Taz
bisounours-codeur
Posté le 06-01-2005 à 08:54:36  profilanswer
 

cricri_ a écrit :

t'es sûr ?
me rappele pas bien mais le RTTI c'est pour le dynamic_cast pour moi ... qqchose comme le real time type ...


le RT de RTTI c'est pour RunTime, pas RealTime

n°939338
++fab
victime du syndrome IH
Posté le 06-01-2005 à 16:13:02  profilanswer
 

Lam's a écrit :

En fait, j'ai menti (mais c'était pour simplifier). Une VTtable n'est généralement pas qu'un tableau de pointeurs, elle contient aussi les infos sur ta classe (donc, pointeur vers les vtables des classes dont elle dérive, nom de la classe, etc.). C'est ce qui permet de faire les dynamic_casts et les type_info...


 
Bonjour à tous, je débarque ...
 
Ce qui permet de faire fonctionner les dynamic_cast, les type_info, c'est plutot l'existence (généralement optionelle) d'un pointeur de la vtbl sur un objet de type type_info. L'objet type_info est, comme un objet(!), crée à l'execution, d'ou RT (Run Time) de RTTI.

n°939370
HelloWorld
Salut tout le monde!
Posté le 06-01-2005 à 16:19:23  profilanswer
 

++fab a écrit :

Bonjour à tous, je débarque ...


:hello:


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°939377
cricri_
Posté le 06-01-2005 à 16:22:39  profilanswer
 

Taz a écrit :

le RT de RTTI c'est pour RunTime, pas RealTime


Ah vi, autant pour moi ...  :whistle:  

n°939630
fabyyyy
Posté le 06-01-2005 à 20:23:16  profilanswer
 

ok merci beaucoup pour ces reponses, je crosi que j;ai ce kil me faut.

mood
Publicité
Posté le 06-01-2005 à 20:23:16  profilanswer
 

n°939735
chrisbk
-
Posté le 06-01-2005 à 23:07:23  profilanswer
 

Lam's a écrit :


Un compilo en 32 bits peut du coup implémenter un appel en:

load registre1, adress_vTable
jump [registre1+function_index_in_vTable*4]




 
call, pas jump, on utilise jump plus tard pour le thuncking :o
(et une instance de classe peut avoir n v-table)

n°939750
++fab
victime du syndrome IH
Posté le 06-01-2005 à 23:25:32  profilanswer
 

chrisbk a écrit :


(et une instance de classe peut avoir n v-table)


 :non:  
Lam's a parfaitement raison sur ce point la.

n°939753
chrisbk
-
Posté le 06-01-2005 à 23:27:14  profilanswer
 

++fab a écrit :

:non:  
Lam's a parfaitement raison sur ce point la.


 
 
non il a tort. Une instance de classe a N V-table, avec N = (nombre de classe de base)-1 (avec 1 v-table si pas de classe de base, evidemment)

n°939758
++fab
victime du syndrome IH
Posté le 06-01-2005 à 23:39:03  profilanswer
 

j'avais pas vu que tu mettais "instance".
Lam's n'a pas dit "instance de classe", mais classe.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  methodes virtuels et temps reel

 

Sujets relatifs
Cherche un Flash Gurru, Segafan, Et qui a du temps, lol.Abaisser la résolution du temps (<1ms)
OPTIMISATION D'ALGO POUR LE TEMPS DE CALCULOptimisation - synthèse sonore temps réel
Monitoring temps réel sur site webexe/dll : duplication du code des méthodes
Débuter avec les dates et le temps [Tuto]un soft d'emplois du temps
Plus de sujets relatifs à : methodes virtuels et temps reel


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR