Re: if-Abfrage bei Datentyp long Kategorie: Programmierung (von André H. - 11.11.2004 23:16) | ||
Als Antwort auf Re: if-Abfrage bei Datentyp long von Thomas - 11.11.2004 22:00 | ||
| ||
Hallo Tomas, > > Ob man jetzt schreibt, > > if x tuedies(); > > oder > > if x!=0 tuedies(); > > ist völlige egal. Beides bedeutet das identische ! > > Nur dauert die zweite Abfrage länger, weil unnötigerweise zwei VM-Codes mehr benötigt werden. > > wenn ich den Code des Compilers richtig verstehe, enthält der generierte VM-Code im zweiten Fall > einen CAST-Operator. Im ersten, bei dem Literal, scheint INT default zu sein. Hier liegst zu ziemlich richtig. CAST ist bei der VM kein richtiger Operator. Zumindest kein extra VM-Code. Es ist eher ein Parameter, der dem eigentlichen Operator mit angegeben wird, damit die VM-Routine "wei�" mit welchen Datentyp sie arbeiten soll. Ein CAST-Parameter ist nur bei folgenden VM-Codes möglich: const VM_ADD = ( VM_CODE_B | 5 ); const VM_SUB = ( VM_CODE_B | 6 ); const VM_MUL = ( VM_CODE_B | 7 ); const VM_DIV = ( VM_CODE_B | 8 ); const VM_MOD = ( VM_CODE_B | 9 ); const VM_EQU = ( VM_CODE_B | 10 ); const VM_NEQU = ( VM_CODE_B | 11 ); const VM_HI = ( VM_CODE_B | 12 ); const VM_HIS = ( VM_CODE_B | 13 ); const VM_LO = ( VM_CODE_B | 14 ); const VM_LOS = ( VM_CODE_B | 15 ); const VM_AND = ( VM_CODE_B | 16 ); const VM_NAND = ( VM_CODE_B | 17 ); const VM_OR = ( VM_CODE_B | 18 ); const VM_NOR = ( VM_CODE_B | 19 ); const VM_XOR = ( VM_CODE_B | 20 ); const VM_NXOR = ( VM_CODE_B | 21 ); const VM_SHL = ( VM_CODE_B | 22 ); const VM_SHR = ( VM_CODE_B | 23 ); const VM_ASR = ( VM_CODE_B | 24 ); const VM_ROL = ( VM_CODE_B | 25 ); const VM_ROR = ( VM_CODE_B | 26 ); const VM_MIN = ( VM_CODE_B | 27 ); const VM_MAX = ( VM_CODE_B | 28 ); const CALC_INT_INT = 0; const CALC_INT_LONG = 1; const CALC_INT_FLOAT = 2; const CALC_LONG_INT = 3; const CALC_LONG_LONG = 4; const CALC_LONG_FLOAT = 5; const CALC_FLOAT_INT = 6; const CALC_FLOAT_LONG = 7; const CALC_FLOAT_FLOAT = 8; Es hei� thier eben nur "CALC". Dieser Parameter wird als Highbyte des VM-Codes angegeben. Der VM-Code selbst belegt lediglich das Lowbyte. Es ist immer wieder interessant, in das Modul vmcodes.c2 rein zu schauen. Denn daraus kann man einiges über die Funktion der VM lernen. ;-) MfG André H. Antworten bitte nur ins Forum! Fragen per EMail auf Forum-Postings werden nicht beantwortet! Das macht meine Heizung gerade | ||
Antwort schreiben Antworten: Re: if-Abfrage bei Datentyp long (von Thomas - 11.11.2004 23:57) Re: if-Abfrage bei Datentyp long (von André H. - 19.11.2004 11:41) Re: if-Abfrage bei Datentyp long oder float (von krassos - 7.11.2005 15:32) |