Instrukcja goto - zło wcielone?
Ostatnio zmodyfikowano 2013-01-09 20:50
Elaine |
» 2013-01-09 09:54:19 poza tym w jakiś tam sposób utrudniasz robotę kompilatorowi |
W jaki sposób? Normalny kompilator zamienia wszystkie ify i pętle na goto, kilka dodatkowych nie zrobi mu żadnej różnicy. |
|
kubawal |
» 2013-01-09 16:44:13 goto dokładnie odwzorowuje instrukcje skoku procesora (instrukcję jmp z asma) |
|
Mrovqa |
» 2013-01-09 20:13:05 goto osobiście nie używam, a w każdym razie nie pamiętam, bym używał, ale na logikę - przy takim skoku trzeba uważać i coś zrobić ze stosem - w końcu kompilatory dla optymalizacji nie tworzą ramek stosu, tylko adresują względnie od esp - wtedy mają rejestr ebp dodatkowo do dyspozycji. Jednakże co się dzieje w rzeczywistości - nie wiem, ale wydaję się być ciekawym :) Może kiedyś to zbadam.
/edit: @Down Aha, czyli w takim razie pewnie kompilator na początku dowolnej funkcji już sobie od razu rezerwuje potrzebne miejsce na stosie (o to mi głównie chodziło :P Choć z tego co pamiętam, to gdzieś nawet iterator pętli był tak zaalokowany (zadanie z RE) :P) |
|
Elaine |
» 2013-01-09 20:50:27 Ale goto nie ma możliwości przeskoczenia do innej funkcji, więc także do innej ramki stosu, stos nie jest ruszany. |
|
1 2 « 3 » |