![]() |
Re: ASM - PChars vergleichen
Sign-Flag.
|
Re: ASM - PChars vergleichen
Liste der Anhänge anzeigen (Anzahl: 2)
is zwar nicht fertig und noch lange nicht perfekt, aber etwas kann man dennoch erkennen ._.
|
Re: ASM - PChars vergleichen
Zitat:
das kann schon sein daß Funktionen bei unsauberer Programmierung für True etwas anderes als $01 zurückgeben, aber das war hier nicht gefragt. Die Frage war, was ein Boolean Wert ist, und unter Delphi ist für Boolean-Werte definiert 0=False und 1=True. Die Tatsache, daß intern bei der Prüfung auf 0 geprüft wird und alles, was nicht 0 ist als True erkannt wird ändert nichts an dieser Definition. Es ist ja z.B. auch klar, daß 2 * 2 = 4 ist, und wenn jemand eine Multiplikations-Funktion so programmiert hat, daß sie für 2 * 2 als Resulttat 27 zurückgibt, dann ändert das auch nichts daran, daß 2 * 2 = 4 ist und bleibt. Außerdem, wenn schon von unsauberer Programmierung die Rede ist : Es ist ja nicht ausgeschlossen, daß jemand eine Routine schreibt, in der er prüft ob ein als Boolean definierter Wert = 1 ist, und dann alles, was nicht 1 ist, als False interpretiert und dann ist Deine Aussage "und nur so kann man ordentlich arbeiten" nicht viel wert. |
Re: ASM - PChars vergleichen
Zitat:
Und die Benennung ZF ist nicht meine Erfindung sondern das Zero-Flag wird nun mal mit ZF bezeichnet. @NeutralGeneral Zitat:
hier ein Auszug aus Intel's Instruction Set Reference. kann man bei Intel als PDF-File (ca. 7.6 MB) downloaden. (einfach zu suchen aber sehr schwer zu finden) SETcc—Set Byte on Condition Description Set the destination operand to 0 or 1 depending on the settings of the status flags (CF, SF, OF, ZF, and PF) in the EFLAGS register. The destination operand points to a byte register or a byte in memory. The condition code suffix (cc) indicates the condition being tested for. The terms “above” and “below” are associated with the CF flag and refer to the relationship between two unsigned integer values. The terms “greater” and “less” are associated with the SF and OF flags and refer to the relationship between two signed integer values. Opcode Instruction Description 0F 97 SETA r/m8 Set byte if above (CF=0 and ZF=0) 0F 93 SETAE r/m8 Set byte if above or equal (CF=0) 0F 92 SETB r/m8 Set byte if below (CF=1) 0F 96 SETBE r/m8 Set byte if below or equal (CF=1 or ZF=1) 0F 92 SETC r/m8 Set if carry (CF=1) 0F 94 SETE r/m8 Set byte if equal (ZF=1) 0F 9F SETG r/m8 Set byte if greater (ZF=0 and SF=OF) 0F 9D SETGE r/m8 Set byte if greater or equal (SF=OF) 0F 9C SETL r/m8 Set byte if less (SF<>OF) 0F 9E SETLE r/m8 Set byte if less or equal (ZF=1 or SF<>OF) 0F 96 SETNA r/m8 Set byte if not above (CF=1 or ZF=1) 0F 92 SETNAE r/m8 Set byte if not above or equal (CF=1) 0F 93 SETNB r/m8 Set byte if not below (CF=0) 0F 97 SETNBE r/m8 Set byte if not below or equal (CF=0 and ZF=0) 0F 93 SETNC r/m8 Set byte if not carry (CF=0) 0F 95 SETNE r/m8 Set byte if not equal (ZF=0) 0F 9E SETNG r/m8 Set byte if not greater (ZF=1 or SF<>OF) 0F 9C SETNGE r/m8 Set if not greater or equal (SF<>OF) 0F 9D SETNL r/m8 Set byte if not less (SF=OF) 0F 9F SETNLE r/m8 Set byte if not less or equal (ZF=0 and SF=OF) 0F 91 SETNO r/m8 Set byte if not overflow (OF=0) 0F 9B SETNP r/m8 Set byte if not parity (PF=0) 0F 99 SETNS r/m8 Set byte if not sign (SF=0) 0F 95 SETNZ r/m8 Set byte if not zero (ZF=0) 0F 90 SETO r/m8 Set byte if overflow (OF=1) 0F 9A SETP r/m8 Set byte if parity (PF=1) 0F 9A SETPE r/m8 Set byte if parity even (PF=1) 0F 9B SETPO r/m8 Set byte if parity odd (PF=0) 0F 98 SETS r/m8 Set byte if sign (SF=1) 0F 94 SETZ r/m8 Set byte if zero (ZF=1) |
Re: ASM - PChars vergleichen
|
Re: ASM - PChars vergleichen
Nochmal zu den boolischen Typen:
oben die Konstanten und unten die Auswertung
Code:
Definition - Boolean:
True = $01 False = $00 <>$00 - True =$00 - False Definition - ByteBool: True = $FF False = $00 <>$00 - True =$00 - False Definition - LongBool: True = $FFFFFFFF False = $00000000 <>0 - True =0 - False |
Re: ASM - PChars vergleichen
Zitat:
Er wurde ja nun darauf hingewiesen und gut ist. |
Re: ASM - PChars vergleichen
Und wenn man sich das MSDN/PSDK durchließt, dann heißt es oftmal "wenn Result ungleich 0" und "Result = 0".
Und nich "Result = 1", wenn der Typ BOOL/LongBool ist. |
Re: ASM - PChars vergleichen
@Muetze1,
Irgendwie habe ich das Gefühl, Du willst mich nicht verstehen. Die Diskussion (oder sollte ich schreiben 'die Debatte'?) begann mit einem Beitrag 3_Of_8s in dem er schrieb Zitat:
Zitat:
Nun, spätestens nach himitsus Beitrag wissen wir, wie ein Boolean definiert ist Zitat:
Ich will niemanden lehren, wie etwas gemacht wird. Jedoch, wenn es so wäre, dann hielte ich es für besser, zu lehren, daß man (es geht hier um Funktionen die in Assembler geschrieben sind) für False den Wert $00 und für True $01 (und nicht irgendeinen Wert der <> 0 ist) zurückgeben sollte. Um die geschätzten anderen User nicht weiter mit dieser sinnlosen Debatte einzubringenanderdurch durcheinanderzubringen, und weil es inzwischen offtopic wird, sollten wir es jetzt dabei belassen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:31 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz