Accéder au port parallèle avec Ada sur Gnu/Linux (résolu) [Ada/Asm] - Ada - Programmation
Marsh Posté le 14-11-2011 à 11:38:16
Bonjour je viens de trouver comment assigner mon adresse que je connais sous forme numérique ; En utilisant la fonction To_Address comme suit :
Code :
|
Marsh Posté le 14-11-2011 à 13:32:32
Pour le moment je me tape que des Storage_Error.
Je tente également l'asm, avec ce code..
Code :
|
Je voudrais écrire 0(zero) sur le port parallèle situé à l'adresse 0x378.
Mais je me tape encore un storage_error.
Mais la, faut que j'invoque Harko peut-être !
Marsh Posté le 14-11-2011 à 17:42:13
J'en suis là,
Code :
|
J'avais trouvé un code qui compilait et s'exécutait sans erreur mais sans avoir le résultat escompté, et je l'ai perdu.
Celui-ci lève une l'erreur Storage_Error, stack overflow (or erroneous memory access) au moment d'exécuter "out".
Marsh Posté le 14-11-2011 à 20:34:34
Petit set de 4 fichiers qui vont bien...
Code :
|
Code :
|
Code :
|
Code :
|
Et un programme de test :
Code :
|
Edit, j'espère avoir apporté toute les correction qui s'imposaient.
Marsh Posté le 14-11-2011 à 20:56:26
Arff, j'ai pas fait gaffe à ce que j'avais fait en fait, et ... Pp-Pp_Io.Get ne fonctionne pas.
J'y retourne.
Je sais, mais bon, c'est la vie.
Marsh Posté le 14-11-2011 à 21:08:07
Voila, c'est corrigé, dans les deux cas ici, pour put et get il faut spécifier True pour le paramètre Volatile de Asm.
Dans "get", on peut même biaiser %%al et utiliser in en écrivant directement dans la variable de sortie.
Marsh Posté le 12-11-2011 à 04:28:45
Bonjour, je me doute bien que c'est possible, mais j'ai pas encore trouvé comment.
J'ai devant moi "Ingénierie du logiciel avec Ada" Traduction de Grady Booch.
Chapitre 17 on aborde le traitement d'exceptions et les fonctionnalités de bas niveau.
Même si je me plante dans l'architecture de ma machine, je lis page 391...
Et je copie à ma sauce.
Mais jamais, les ligne 35 et 36 ne passe au compilateur qui me dit :
void:Ada# gnatmake Sources/main -o Targets/main -gnat83
gcc-4.3 -c -ISources/ -gnat83 -I- Sources/main.adb
main.adb:35:25: expected private type "System.Address"
main.adb:35:25: found type universal integer
main.adb:36:25: expected private type "System.Address"
main.adb:36:25: found type universal integer
gnatmake: "Sources/main.adb" compilation error
void:Ada#
Mon issue est peut-être dans l'astuce pour passer un type address la ou j'ai mis un universal integer.
Sauriez vous comment s'y prendre ?
Merci pour votre aide.
Message édité par Profil supprimé le 15-11-2011 à 01:19:57