Entwickler-Ecke
Algorithmen, Optimierung und Assembler - Asembler-Funktion Rückgabewert Boolean
Morphilog - Mo 12.06.06 17:35
Titel: Asembler-Funktion Rückgabewert Boolean
Hallo zusammen!
Ich hab folgendes Anliegen. Ich lerne gerade Assembler und habe versucht wie folgt eine Function zu schreiben, welche einen bool`schen Rückgabewert hat. Nach meinen Informationen werden die Rückgabewerte in Delphi im EAX bzw AX oder AL - Register zurückgegeben. False = 0, True = 1 oder?! Boolean ist ein 1Byte Datentyp, also müsste das AL-Register ausreichen. Jedoch funktioniert es mit keinem der 3 Varianten, dass der Rückgabewert korrekt zurückgeliefert wird :(
Nuja ich habe folgenden Code geschrieben. Die Routine läuft eigentl. so wie sie denk ich soll, bis auf die Tatsache das es scheint, dass diese Routine keinen Rückgabewert liefert.
Hat jemand eine Idee woran dies liegt? Falls irgendwas falsch ist, weisst mich bitte drauf hin ;)
Hier der Code:
Delphi-Quelltext
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: 33:
| function isINFifo(value: LongWord):Boolean; begin asm PUSH EDI PUSH ECX PUSH EBX
call getNumberOfElements MOV ECX, EAX MOV EAX, value lea edi, fifo repne scasd
Cmp ecx,0 JNE @@gefunden mov ebx, value cmp [edi-4],ebx je @@gefunden
@@nichtgefunden: mov ax,0 jmp @@ende @@gefunden: mov ax,1
@@ende:
POP EBX POP ECX POP EDI end; end; |
so far so long
mfg Morph
Moderiert von
raziel: Code- durch Delphi-Tags ersetzt
BenBE - Mo 12.06.06 18:50
Delphi macht einen wesentlichen Unterschied zwischen
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| function Foo: Boolean; Begin ASM MOV AL, 1 end; end; |
und
Delphi-Quelltext
1: 2: 3: 4:
| function Foo: Boolean; ASM MOV AL, 1 end; |
Bei ersterem muss man Delphi explizit anweisen, den Result-Wert zu übernehmen, während Delphi dies bei zweiterem automatisch macht...
Ach ja: Ersteres lautet korrekt so:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| function Foo: Boolean; Begin ASM MOV Result, 1 end; end; |
Müsste Dir Delphi aber eigentlich auch mit einer Warnung quittieren "Rückgabewert wahrscheinlich nicht gesetzt..." ;-) Man sollte auf Delphi hören, wenn es sowas sagt ... oft genug hat es damit Recht :P
Morphilog - Mo 12.06.06 20:27
fein :) ... ich sag nur hab vielen dank und wer lesen kann ist klar im vorteil ;)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!