Instrukcja skoku: Różnice pomiędzy wersjami

Dodane 47 bajtów ,  13 lat temu
[wersja przejrzana][wersja przejrzana]
Usunięta treść Dodana treść
Konradek (dyskusja | edycje)
Konradek (dyskusja | edycje)
Linia 23:
Obserwacja ta znalazła zastosowanie w konstrukcji [[procesor]]ów i wyrażenia tego w języku [[asembler]]a, gdzie dostępne są te właśnie instrukcje (instrukcje skoku bezwarunkowego <code>JMP</code> i warunkowego <code>Jxx</code> w architekturze [[x86]], gdzie <code>xx</code> symbolizują stan [[flaga (informatyka)|flag]] [[rejestr stanu|rejestru stanu]] zmienianego po części instrukcji procesora).
 
Pierwsze języki, przede wszystkim ze względu na nacisk na łatwość konstrukcji [[kompilator]]ów nie odbiegały znacząco zasobem instrukcji od asemblera, np. w pierwszych wersjach [[Fortran]]a jedyną instrukcją warunkową był właśnie skok – nie można było warunkowo przypisać wartości czy wykonać grupy poleceń. Z czasem do popularnych języków (wyrosłych na podstawie Fortrana) zaczęto dodawać inne instrukcje kontroli przepływu: wykonania warunkowego (<code>if (''warunek'') { ''polecenie1'' } else { ''polecenie2'' }</tt>, różne rodzaje [[pętla (informatyka)|pętli]] (<code>while</code>, <code>for</code>), rekurencyjność, instrukcje ponowienia (<code>redo</code>), [[instrukcja kontynuacji|następnej iteracji]] (<code>next</code> lub <code>continue</code>) lub [[instrukcja opuszczenia|zakończenia wykonywania]] (<code>last</code> lub <code>break</code>) pętli,
te same instrukcje z wielopoziomowymi pętlami (<code>X: foreach $a(@A) { foreach $b(@B) { …; if (…) { last X; }} }</code>), [[wyjątek|wyjątki]], [[iterator]]y, [[funkcja wyższego rzędu|funkcje wyższego rzędu]], [[wątek (informatyka)|wątki]] itd., co uczyniło z instrukcji skoku instrukcję na wskroś przestarzałą.
 
12 936

edycji