Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 |
void Test(const int bla, int *b) { if (bla == 7) { *b = 0; } else { *b = 1; } } |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 |
void Test(const int bla, int *b) { if (bla == 7) { *b = 0; return; } *b = 1; } |
C-/C++-Quelltext |
|
1 2 3 4 |
void Test(const int bla, int *b) { *b = ( bla != 7 ); } |
Zitat von »"Nexus"«
Das wird kaum etwas ausmachen, ein else ist ja keine Abfrage.
Ausserdem ist das const int als Parametertyp etwas fragwürdig, int würde es genauso tun. Begründung siehe hier.
Zitat von »"drakon"«
Um jetzt nicht eine Optimierungsdiskussion auszulösen (was wir schon zu oft hatten) sei hier noch gesagt, dass es nicht grundsäztlich falsch ist sich über solche Sachen Gedanken zu machen. Man sollte es einfach nicht unter dem Vorwand der Optimierung tun, sondern des reinen Interessens und Neugierde, dann geht nämlich auch keine Zeit verloren)
Quellcode |
|
1 2 3 4 5 |
00000000 4C dec sp 00000001 0107 add [bx],ax 00000003 009C4594 add [si+0x9445],bl 00000007 4A dec dx 00000008 0E push cs |
Quellcode |
|
1 2 3 4 5 6 |
00000000 4C dec sp 00000001 0107 add [bx],ax 00000003 007646 add [bp+0x46],dh 00000006 94 xchg ax,sp 00000007 4A dec dx 00000008 0E push cs |
C-/C++-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 |
void Test(int bla, int *b) { if (bla == 7) { *b = 0; } else { *b = 1; } } volatile int blub = 7; int main() { int bla = blub; int b; Test(bla, &b); return b; } |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
int main() { int bla = blub; 013A1000 mov eax,dword ptr [blub (13A3018h)] int b; Test(bla, &b); 013A1005 xor ecx,ecx 013A1007 cmp eax,7 013A100A setne cl 013A100D mov eax,ecx return b; } 013A100F ret |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
int main() { int bla = blub; 00A91000 mov eax,dword ptr [blub (0A93018h)] // hol den Wert von blub ins eax Register int b; Test(bla, &b); 00A91005 xor ecx,ecx // Setze ecx auf 0 00A91007 cmp eax,7 // Vergleiche eax (blub) mit 7 00A9100A setne cl // wenn eax (blub) != 7 setze ecx auf 1 00A9100D mov eax,ecx // gib das Ergebnis zurück return b; } 00A9100F ret // return |
Zitat von »dot«
Liefert folgenden asm Output:
Code (C++):
int main()
{
int bla = blub;
013A1000 mov eax,dword ptr [blub (13A3018h)]
int b;
Test(bla, &b);
013A1005 xor ecx,ecx
013A1007 cmp eax,7
013A100A setne cl
013A100D mov eax,ecx
return b;
}
013A100F ret
Werbeanzeige