Bonjour,
J'essaye d'intégrer directement dans une fonction pascal quelques lignes d'assembleur.
J'utilise pour me guider le cours disponible sur le forum (Merci Nono40)
Malheureusement il n'y a pas d'exemple sur l'usage de tableaux avec des strings ou de éléments de tailles diverses interdisant, a priori, l'usage de la directive Type
Il est normal que cela ne fonctionne pas car le L[[I] n'est pas correct il devrait être L[[I * 10] 10 tant la sizeof(string[9]);
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 function Doublons: longint; var i: Longint; Index: Longint; L:array[0..99] of strng[9]; begin for i:=0 to 99 L[i]:= IntotoStr((Random 1000)+1); i := 0; Index := 0; repeat if L[i] <> L[i + 1] then begin Inc(Index); asm PUSH ESI PUSH EDI LEA ESI, L[i] LEA EDI, L[Index] MOV ECX, 2 REP MOVSD // 8 MOVSW // 2 POP EDI POP ESI end; // L[Index]:= L[i]; end; inc(i); until i >= 98; Doublons := Index; end;
Le LEA attends l'offset pas l'index
Le problème est que je ne trouve pas la syntaxe correcte
Le compilateur me refuse L[i * 10]
Quelqu'un peu-il me donner la bonne syntaxe?
Merci
PapyJohn
J'ai pense à poster sur le forum assembleur mais comme il s'agit d'intyegration dans Delphi je pense avoir plus de reponse ici.
Partager