Cogito Ergo Credo
1) die ASM-file ook in uw project file steken (hoe je het moet doen, weet ik niet)
2) embedded ASM gebruiken ... (zoals in C met asm{ ... }
2) embedded ASM gebruiken ... (zoals in C met asm{ ... }
I must not fear. Fear is the mind-killer. Fear is the little-death that brings total obliteration. I will face my fear. I will permit it to pass over me and through me. Where the fear has gone there will be nothing. Only I will remain.
lijkt me gewoon project manager gebruiken dus...Op dinsdag 11 juni 2002 13:15 schreef -Avalanche- het volgende:
1) die ASM-file ook in uw project file steken (hoe je het moet doen, weet ik niet)
ok.. zal eens proberen...2) embedded ASM gebruiken ... (zoals in C met asm{ ... }
Cogito Ergo Credo
idd..bewoon Begin wijzigen in AsmOp dinsdag 11 juni 2002 13:18 schreef deur het volgende:
code:
1 2 3 4 5 asm . . . end;
procedure bla;
asm
mov blaat,blaat
[..]
end;
...beter bekend als AMFan
Verwijderd
Even wat geprobeerd
Unit1.pas:
File1.txt:
Nou slaat bovengenoemd voorbeeld natuurlijk nergens op maar het compileert wel en sterker nog: het werkt zelfs.
Unit1.pas:
code:
1
2
3
4
5
6
7
8
9
| function Blaat: Integer;
asm
{$I File1.txt}
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(IntToStr(Blaat));
end; |
File1.txt:
code:
1
| mov @Result, 4 |
Nou slaat bovengenoemd voorbeeld natuurlijk nergens op maar het compileert wel en sterker nog: het werkt zelfs.
De assemblercode invoegen halverwege de procedure/functie kan ook.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| function APlusBMaalTwee(A, B: Integer): Integer;
begin
Result := 0;
ShowMessage(IntToStr(Result));
asm
{ eax, ecx en edx kun je vrijelijk gebruiken. }
{ Je hoeft ze na afloop niet te herstellen. }
mov edx,A
add edx,B
shl edx,1
{ Het functieresultaat wordt voor ordinale }
{ typen altijd geretourneerd in eax. }
mov eax,edx { betekent hetzelfde als Result := edx }
end;
ShowMessage(IntToStr(Result));
end; |
Een goede grap mag vrienden kosten.
Oud topic, maargoed
Ik haak ff in op de opmerking van tomatoman over het vrijelijke gebruik van eax, ecx en edx: mag je ebx dan niet vrijelijk gebruiken?
Valt er trouwens veel te optimaliseren door het zelf schrijven van stukjes assembler tussen de code?
Valt er trouwens veel te optimaliseren door het zelf schrijven van stukjes assembler tussen de code?
* LordLarry geeft gewoon nog een antwoord op het topic
Je kan ook .obj bestanden gewoon mee linken...zie {$L SomeFile.OBJ}
Je kan ook .obj bestanden gewoon mee linken...zie {$L SomeFile.OBJ}
We adore chaos because we like to restore order - M.C. Escher
mij is altijd geleerd voor de zekerheid de bx/cx/dx registers even op te slaan volgens mijGerbenW schreef op 09 oktober 2002 @ 20:50:
Oud topic, maargoedIk haak ff in op de opmerking van tomatoman over het vrijelijke gebruik van eax, ecx en edx: mag je ebx dan niet vrijelijk gebruiken?
Valt er trouwens veel te optimaliseren door het zelf schrijven van stukjes assembler tussen de code?
er is op zich best wat te optimaliseren, maar je moet goed kijken waar je het doet. Een stukje code wat slechts enkele keren gebruikt wordt in een programma is niet echt de moeite waard imho, een soort sorteer routine die vaak gebruikt wordt kan soms (en mits je genoeg verstand hebt van optimaliseren in asm) best veel sneller gemaakt worden
AMD Phenom II X4 // 8 GB DDR2 // SAMSUNG 830 SSD // 840 EVO SSD // Daar is Sinterklaas alweer!!
Ja voor een gemiddeld windowsprogramma zal het weinig uitmaken maar ik heb 't over 3D engines
geen idee eigenlijk, kan me voorstellen dat het wel kan, maar de voorbeelden van snelheidswinst die ik gezien heb hadden meestal betrekking op sorteren van data en zoeken in tekenreeksen etc.
AMD Phenom II X4 // 8 GB DDR2 // SAMSUNG 830 SSD // 840 EVO SSD // Daar is Sinterklaas alweer!!
Inderdaad, ik gebruik dan radix-sort om de poly's te sorteren en die vreet tijd. Misschien zet ik die es om in asm...
ebx mag je best gebruiken, maar moet je bij het verlaten van het asm-blok in de oude staat herstellen.GerbenW schreef op 09 oktober 2002 @ 20:50:
Oud topic, maargoedIk haak ff in op de opmerking van tomatoman over het vrijelijke gebruik van eax, ecx en edx: mag je ebx dan niet vrijelijk gebruiken?
Delphi:
1
2
3
4
5
| asm push ebx // ebx bewaren op de stack { doe iets met ebx } pop ebx // ebx herstellen vanaf de stack end; |
Meestal is het resultaat absoluut niet merkbaar, omdat Delphi-code snel genoeg is. Heel soms kan het enorm veel schelen als je bijvoorbeeld exotische assembler-bevelen gebruikt. Dat is echter een grote uitzondering.Valt er trouwens veel te optimaliseren door het zelf schrijven van stukjes assembler tussen de code?
Een goede grap mag vrienden kosten.
Pagina: 1