Ich würde gerne wissen, was ist der Unterschied zwischen return from interrupt(RTI) und Rückkehr aus Unterprogramm(RTS). Beide sind das gleiche oder gibt es einen Unterschied zwischen diesen beiden?
InformationsquelleAutor Amit Singh Tomar | 2011-03-11
In der Regel Rückkehr vom interrupt setzt die flags, so dass der unterbrochene code kann weiterhin korrekt ausgeführt werden. Rückkehr aus Unterprogramm nicht tun müssen, die Anweisung verwendet wird absichtlich in diese Strömung von code und bekannt, dass die flags sind oder nicht, vernichtet abhängig von der Architektur. In-Architekturen, die Verwendung eines Stacks für die Rückkehr-Adresse ist es sehr offensichtlich. Eine Rückkehr vom interrupt springt die Fahnen dann die Adresse zurück, wo eine Rückkehr aus dem Unterprogramm wird nur pop die Rückkehr-Adresse.
die flags (Inhalt des Prozessor-Status-Wort) poped bei RTI sind diejenigen, die gezwungen wurden zu Beginn des Interrupts durch den Prozessor. Dies ist jedoch nicht automatisch der Fall für alle archtetures: Gute alte Z80 oder 8051-Architektur NICHT schieben Sie die PSW bei interrupts. In diesen Fällen wird der code von den iterrupt-handler zu kümmern hat.
Das ist, warum ich begann, mit dem Wort in der Regel, da hätte ich ein wenig weniger subtil. Sie nicht angeben, eine Architektur also musste ich ein bisschen allgemein. Architekturen, die nicht über einen Unterschied zwischen Rückkehr vom interrupt und return-aus subroutine haben oft nicht die separate Anleitung. wenn Sie es tun ist in der Regel etwas knallen der status word oder für die änderung eines internen Prozessor-Schutz Zustand oder sowas.
InformationsquelleAutor old_timer
Wenn ein hardware-interrupt tritt auf, auf einem x86 die Fahnen und die return-code-segment+offset auf den Stapel verschoben werden. Dann interrupts deaktiviert sind. Dies ist, um die Bühne für die interrupt-routine, um die interrupt: switch-stacks oder was auch immer es tun will, bevor die re-Aktivierung der interrupts und Verarbeitung etwas mehr vor und/oder Rückkehr aus dem interrupt. Die iret-Anweisung öffnet die zuvor gespeicherten flags (einschließlich der interrupt-Flags, die ursprünglich aktiviert) und die Rückkehr Ort, so dass der unterbrochenen routine fortgesetzt werden kann die Verarbeitung nicht klüger.
InformationsquelleAutor Olof Forshell
Gut, interrupts werden gespeichert in einem anderen code-segment, also RTI genannt werden, die mit einem far-call, während Unterprogramme in der Regel bleibt in der gleichen code-segment wie das Hauptprogramm, so nennt man Sie mit einem near-call. Der Unterschied ist, dass weit-Anrufe drücken Sie das segment und den offset wie die Adresse zurück, während in der Nähe Anrufe, push nur der offset.
InformationsquelleAutor BlackBear
Die Tatsache, dass ein Prozessor eine interrupt-handling ist markiert, eine oder mehrere flags im status-register der CPU.
Diese wird benötigt, z.B. um die Maske anderen möglichen interrupts.
Um zu sagen, der Prozessor, interrupt-handling und das flag zurückgesetzt werden kann, den RTI-Befehl benutzt wird, anstatt nur RTS.
Natürlich die details sind abhängig von den jeweiligen CPU.
Es ist nicht "gekennzeichnet", wie Sie es nennen. Wenn es ein hardware interrupt das interrupt-bit wird auf "deaktiviert" gesetzt. Aber dies kann verursacht werden durch "normale" Verarbeitung es ist also kein zuverlässiger Indikator für einen interrupt in progress.
Forshell: Scheint, Sie denken über eine Besondere Architektur. Da AMIT nicht beziehen sich auf eine Besondere Architektur, die ich gerade beschrieben habe, das Allgemeine Verhalten, die gemeinsame oder ähnliche auf alle architecures ich weiß. Natürlich gibt es noch weitere details, wie ich schon erwähnt habe.
InformationsquelleAutor Curd
RET wird nur pop-die zwei bytes zum PC (Addr low und Addr Hoch)
RETI setzt den interrupt-enable-flipflop und zwei bytes werden poped aus dem Stapel
InformationsquelleAutor abhilash
InformationsquelleAutor Kapil Porwal