Bonjour,
En tant que membre du projet SKAN, nous avons un petit problème de traduction d'une source FASM vers NASM.
En FASM, ca donne :
Voici l'explication par sdx :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 times 512-($ MOD 512) db 0
Le code que j'ai donné dans le source du noyau permet de remplir le noyau de zéro jusqu'au prochain multiple de 512, pour que sa taille puisse être exprimé facilement en secteurs !
($ MOD 512) représente le reste de la division de l'adresse courante par 512. On comprend mieux l'utilité si on dit "ce qu'il reste quand on ne peut plus soustraire 512 à l'adresse courante", soit la différence avec le multiple de 512 juste inférieur. Par exemple, si le code fait 1020 octets, on a 1020 MOD 512 = 508.
Ensuite, 512 - ($ MOD 512), ça représente le nombre d'octets manquants pour atteindre le prochain multiple de 512. Dans l'exemple précédant, 512 - 508 = 4, on a donc bien 1020 + 4 = 1024, qui est bien un multiple de 512.
C'était une petite astuce que j'avais trouvé "vite fait" ... mais vous pouvez faire autrement (tant que "noyau.asm" se compile comme binaire de taille multiple de 512 !!)
Savez vous comment faire sous NASM ?
Partager