Architecture d'un programme en technologie Up ! Virtual Technical Machine

Up ! Virtual Technical Machine...
Spécificités de l'architecture d'un programme compilé en C / C++...
Architecture d'un programme interprété par Up ! Engine...

Les programmes en technologie Up ! Virtual Technical Machine peuvent être dérivés en des programmes exécutables compilés pour une architecture spécifique (génération de sources C / C++ par Up ! C / C++ Generator) ou des programmes interprétables par Up ! Engine émulant le processeur virtuel Up ! P32.
Quelle que soit la cible de génération retenue, l'architecture est relativement identique. Elle est illustrée par le schéma ci-dessous :

Le programme repose sur une machine virtuelle technique dénommée Up ! Virtual Technical Machine. Celle-ci a pour but de lisser toutes les différences entre les systèmes d'exploitation supportés. Ainsi, elle tient compte notamment :

La machine virtuelle lisse également aussi toutes les différences entre les interfaces hommes-machines :

Le module Up ! Kernel de Up ! Virtual Technical Machine gère les objets standards employés par les programmes Up ! Application System. Vu d'en dehors de Up ! Virtual Machine, ces objets sont identiques quelques soient leur implémentation. Celle-ci peut être :


Up ! Virtual Machine est le socle qui garantit la portabilité des programmes écrits en Ups et leur exécution identique d'une plate-forme à l'autre.

Revenir en haut de la page...
Les modules natifs de Up ! Application System regroupant les Application Programme Interfaces (API) spécifiques à chaque plate-forme (Up ! System, Up ! Window) interagissent directement avec les couches de bas niveau des systèmes d'exploitation en se conformant aux standards du marché (Posix par exemple). Si une Application Programme Interface (API) est non normalisée, elle est généralement non employée ou réécrite.
Up ! Kernel étant du code compilé optimisé et robuste aux erreurs, cela permet d'avoir à la fois des programmes performants et fiables.

Revenir en haut de la page...
Up ! Engine est un programme en technologie Up ! Virtual Technical Machine exécutable particulier. Il existe donc une version de ce programme par plate-forme dont le fonctionnement est identique quelle que soit la plate-forme.
Up ! Engine charge les modules constituants le programme au démarrage de celui-ci. Pour les modules natifs, ils sont chargés par Up ! Module et Up ! Engine construit une table de translation entre les appels utilisés par un module de code semi-compilé et les appels natif cible.
Pour les modules semi-compilés au format Up ! P32, Up ! Engine crée autant de modules et de composants natifs qu'il existe de modules et de composants semi-compilés. Les segments de données sont identiques à ceux des modules natifs ; les segments de codes sont construits à partir notamment d'Application Programme Interfaces (API) propres à Up ! Virtual Machine par translation de l'assembleur du processeur virtuel Up ! P32. Ainsi, la vitesse d'exécution d'un programme interprété par Up ! Engine est honorable et sa consommation mémoire n'est guère supérieure à celle du programme natif équivalent.

Revenir en haut de la page...