Damals hab ich einfach Assembler dafür hergenommen, war natürlich sehr sperrig, aber mit der Abfrage des Carryflag ging es. Multiplikationen waren dann einfach nur eine Schleife von Additionen - braucht natürlich mehr Rechenzeit.  Heute kann man übrigens noch immer prima Assembler mit einbauen bei FPC, ist nicht so seltsam wie bei minGW C++ der Syntax. Aber natürlich ist FPC in Reinform viel übersichtlicher als C++ oder gar Assembler.
Hier mal eine kleine Kostprobe von Assembler  
 
 
Code: Alles auswählen
    push ECX; // Hauptzähler sichern
    mov  ECX, DWCount; // DW-Zeiger laden
    mov  EAX, [tmpSum1][ECX]; // Summand 1 in EAX laden
    mov  EBX, [tmpSum2][ECX]; // Summand 2 in EBX laden
    add  ECX, 4;              // Nächstes DW 4x8Byte = 32 Bit
    mov  DWCount, ECX;        // DW-Zeiger für das nächste DoppelWort
    pop  ECX; // Hauptzähler wiederherstellen
    add  EAX, EBX; // Beide Doppel-Wörter addieren
    jc   @@CarryBit; // Bei 32+1 Bit Übertrag auf das nächste DW
    // Register sichern
    push EAX; // Ergebnis sichern
    push ECX; // Hauptzähler sichern
    mov  ECX, MAXDW; // Anzahl der Kopiervorgänge
    // Restliche Bits nachschieben
    cmp  bCarryBit, 0;
    je   @@Schieben;
    // Carry steht eh schon in EAX
    cmp  CX, 1; // Zuvor prüfen, ob die Obergrenze überschritten wurde
    je   @@Error_Overbit; // Wenn ja, Abbruch und Fehlerflag setzen