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:

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)]);
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!
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+