Bonjour,
Je fais une petit essai en assembleur Lazarus qui consiste à faire une addition de deux QWord. Je suis pas trop doué, je m'y mets juste:
Voici le code de mon test:
Le problème, c'est que Format me bouffe les 3 dernières décimales. Avec Jipété qui est sur Linux, il obtient toutes les décimales. Voir ici!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 procedure TForm1.BtnASMClick(Sender: TObject); Var q1, q2 : QWord; begin Q1 := 18446744073709551000; // Q1 + Q2 = 18446744073709551615 = Max de QWord 64 bits Q2 := 615; {$ASMMODE INTEL} Asm Mov RAX,Q1 ADD Q2, RAX End; Form1.Memo1.Lines.Add('CALCULS EN ASSEMBLEUR'); Form1.Memo1.Lines.Add('Q1 + Q2 = '+format('%0.0n', [double(Q2)]);
Il faudrait donc créer une fonction de type QWordToStr qui donne un string...
Je cherche donc une gestion par assembleur car j'ai essayé d'autres algorithmes mais, je suis toujours limité par le Type QWord qui n'est pas vraiment utilisable pour des conversions...
Donc, il faudrait que je puisse afficher maintenant en assembleur le résultat sous forme d'un string.
Est-ce que vous pouvez m'aider?
Je vais continuer à chercher maos je n'ai pas trouver d'instruction permettant de transformer un QWord en string. Ul faut sans doute écrire une routine pour ça!
A+
Partager