Je travaille à la programmation d'un programme d'amorçage Linux pour un devoir d'enseignement et je sais que je dois créer une fonction qui lira/écrira un mot de/vers la mémoire. J'ai du mal à déterminer si je suis sur la bonne voie ou non et toute aide serait la bienvenue. Je testerais bien ces fonctions mais pour l'instant ce n'est pas possible pour moi car je dois travailler sur la construction des fonctions de base avant de pouvoir tout assembler. On m'a donné get_byte(segment,offset)/put_byte(char,segment,offset) dont le fonctionnement a été vérifié par mon professeur, codées en assembleur et exportées en C.
unsigned short get_word(unsigned short segment, unsigned short offset)
{
unsigned short word, low, hi;
low = get_byte(segment, offset);
high = get_byte(segment, offset+1);
word = low+hi;
return word;
}
Je ne suis pas sûr que ce qui précède soit correct. Je sais que le haut et le bas doivent être combinés, est-il possible de les ajouter ou dois-je simplement faire bas et haut et renvoyer le résultat ? Si je suis totalement à côté de la plaque, faites-le moi savoir. Est-il correct que l'offset soit unsigned short ou doit-il être int ?
int put_word(unsigned short word, unsigned short segment, unsigned short offset)
{
unsigned short low, hi;
low = word | offset;
hi = word | offset+1
put_byte(segment, low);
put_byte(segment, hi);
return 0;
}
Je n'ai aucune idée si le code ci-dessus est proche de la réalité, mais c'est ma meilleure hypothèse.
Quelqu'un connaît-il la solution ou a-t-il des conseils ? Ces fonctions devraient être assez basiques mais je suis coincé et j'ai besoin de me lancer dans la vraie partie de mon travail.
MISE À JOUR (12:46) : Corrigé put_byte(), comme indiqué ci-dessous, cela n'aurait pas de sens d'accepter seulement deux arguments, corrigé cela. Je m'excuse pour mon erreur.