Afficher le contenu du registre
Résolu/Fermé
BV91
Messages postés
15
Date d'inscription
vendredi 12 avril 2013
Statut
Membre
Dernière intervention
21 mai 2013
-
Modifié par BV91 le 12/04/2013 à 14:16
BV91 Messages postés 15 Date d'inscription vendredi 12 avril 2013 Statut Membre Dernière intervention 21 mai 2013 - 20 avril 2013 à 18:30
BV91 Messages postés 15 Date d'inscription vendredi 12 avril 2013 Statut Membre Dernière intervention 21 mai 2013 - 20 avril 2013 à 18:30
A voir également:
- Afficher le contenu du registre
- Registre windows - Guide
- Word a trouvé du contenu illisible - Guide
- Afficher mot de passe wifi android - Guide
- Le fichier à télécharger correspond au contenu brut d’un courrier électronique. de quel pays a été envoyé ce message ? - Guide
- Afficher appdata - Guide
1 réponse
[Dal]
Messages postés
6174
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
2 février 2024
1 083
Modifié par [Dal] le 12/04/2013 à 13:54
Modifié par [Dal] le 12/04/2013 à 13:54
Salut BV91,
Si tu parles de registres du microprocesseur, le C n'est, normalement, pas fait pour cela.
De plus, ta question est très incomplète, puisque tu ne mentionnes pas de quel processeur tu parles, ni de quel registre.
A titre d'information, voilà un tableau des registres sur un processeur x86 :
https://en.wikipedia.org/wiki/File:Table_of_x86_Registers.png
Outre le processeur et le registre concerné, explique pourquoi tu veux faire cela, car cela peut nous aider à te donner une meilleure réponse.
Explique aussi ce que tu veux dire par "sous la forme de 4 chiffres", car ton code ne fait pas cela, de toutes façons.
Donne un exemple :-)
Dal
Si tu parles de registres du microprocesseur, le C n'est, normalement, pas fait pour cela.
De plus, ta question est très incomplète, puisque tu ne mentionnes pas de quel processeur tu parles, ni de quel registre.
A titre d'information, voilà un tableau des registres sur un processeur x86 :
https://en.wikipedia.org/wiki/File:Table_of_x86_Registers.png
Outre le processeur et le registre concerné, explique pourquoi tu veux faire cela, car cela peut nous aider à te donner une meilleure réponse.
Explique aussi ce que tu veux dire par "sous la forme de 4 chiffres", car ton code ne fait pas cela, de toutes façons.
Donne un exemple :-)
Dal
Modifié par BV91 le 12/04/2013 à 14:13
Oui, il s'agit du registre du microprocesseur. Pour le langage, c'est un contrainte qui vient d'en-haut ;)
Mon programme est censé modéliser un registre capable de mémoriser puis d'afficher 4 digits = 4 chiffres décimaux.
Et le soft devrait tourner éventuellement sur un micro-contrôleur ou un DSP...
J'espère que j'ai été claire ! :)
Modifié par [Dal] le 12/04/2013 à 15:42
La façon dont tu accèdes à un registre donné, ou dont tu peux afficher quelque chose sur un affichage éventuellement présent va dépendre du matériel.
Sur un micro-controleur Arduino, les registres sont mappés sur des variables directement manipulables dans le programme écrit en langage arduino (proche du C), et portent des noms précis.
Pour stocker des valeurs de 0000 à 9999 sur le matériel, il te faut un registre sur 16 bits, ou deux registres de 8 bits, que tu puisses utiliser à des fins de stockage.
Si tu ne fais que "modéliser", sans savoir pour quel matériel, je ne vois pas trop l'intérêt de ce que tu dois faire, car tu vas devoir simuler le stockage d'une valeur sur un registre et simuler l'envoi de chiffres sur un affichage (à la rigueur, fais des fonctions à compléter une fois le matériel déterminé).
Quant à prendre un entier entre 0 et 9999 et retourner une chaîne de 4 caractères au maximum, avec zéros devant si nécessaire, un sprintf(chaine, "%04d", contenu_reg); suffira.
Dal
Modifié par BV91 le 15/04/2013 à 14:16
Ce qui m'embête un peu c'est l'espace mémoire du registre. Une variable de type "int" me semble gourmande en matière d'espace mémoire. Y aurait-il un autre type natif de données qui pourrait mieux accueillir mon registre ?
15 avril 2013 à 16:48
Dans l'ordre des types de données, le C prévoit short int, puis int.
La taille effective occupée par ces types de données dépendra du matériel utilisé. Sauf erreur, tout ce que l'on peut dire, d'après le standard, c'est qu'il seront au moins sur 16 bits (permettant de stocker des valeurs de 0 à 65535), et qu'un short int sera inférieur ou égal en taille à un int.
Il y a des chances que l'implémentation du C à utiliser pour la programmation de ces matériels retienne une taille identique, mais comme tu le vois, tu "consommes" déjà 2 octets au moins.
Si tu es à un octet près (!), tu peux toujours faire de la manipulation de bits pour sauver quelques bits de plus, mais pour stocker 9999 il te faut de toutes façons 14 bits, alors l'économie par rapport à 16 bits ne vaut certainement pas le mal que tu te donnerais à programmer cela en C.
Enfin, dans la mesure où ton entier ne sera pas signé, le type adéquat sera aussi "unsigned short int" ou "unsigned int".
Dal
Modifié par BV91 le 20/04/2013 à 18:50
Comme j'aurai besoin de 2 octets : 4 groupes de 4 bits, le 1er groupe de 4 bits sera réservé aux milliers, le 2ème groupe sera réservé aux centaines, 3ème groupe sera réservé aux dizaines et le 4ème sera réservé pour les unités.
J'ai créé donc un nouveau type "registre" de type unsigned short. Je pense que ça fera l'affaire :
Et la fonction ShowReg sera donc la suivante :