2010-03-22 11 views
3

J'ai programmé un émulateur, mais j'ai quelques doutes quant à la façon de l'organiser correctement, parce que, je vois qu'il a quelques problèmes à propos de la connexion des classes (CPU < -> Machine Board). Par exemple: ports d'E/S, interruptions, communication entre deux processeurs ou plus, etc.Quel type de modèle de conception devrait être utilisé pour créer un émulateur?

J'ai besoin que l'émulateur ait les meilleures performances et une bonne compréhension du code.

PD: Désolé pour mon mauvais anglais.

EDITED:

Demande de plusieurs modèles.

+2

Il y a rarement un seul motif de conception qui s'applique à quelque chose de si complexe. Vous pourriez vouloir corriger votre question. –

Répondre

3

Vous avez deux choses en relation étroite ici.

  1. L'émulateur est une collection de commande définitions. Chaque chose que l'émulateur peut faire est une commande. Certaines commandes sont des séquences imbriquées de commandes. L'émulateur a un certain nombre de définitions internes d'état. Chaque chose que l'émulateur met à jour un ou plusieurs objets d'état.

+0

Merci beaucoup;) – Facon

1

Créez votre logiciel sans tenir compte des "modèles". Les motifs tomberont naturellement hors de votre travail s'ils sont destinés à être là. Construire votre logiciel pour correspondre à des idées préconçues de quels modèles ils auront tendance à le rendre plus encombrant et plus résistant au changement.

(Si vous n'avez pas encore, téléchargez un framework de test unitaire pour votre langue et de l'utiliser pour guider votre développement!)

+0

Je n'ai aucune idée de devoir utiliser un cadre de test unitaire. – Facon

+0

Trouvez et téléchargez UnitTest ++ (en supposant que vous codiez en C ou C++), lisez la documentation et profitez de la liberté. –

1

D'abord un coup d'oeil à wiki. Il semble donner un point d'entrée à l'art de l'émulation. Deuxièmement, je regarderais comment QEMU ou DOSBox sont structurés. Regardez aussi SourceForge. Simple query donne émulateurs suivants: logiciels

En général, il n'y a pas de modèle unique pour une telle tâche complexe. Vous aurez certainement besoin du modèle State Machine et vous pouvez utiliser le modèle Command pour des actions d'expédition. Mais je suggère vraiment que vous regardiez le travail des autres.