ebreak
lyszt.net behandelt ebreak und andere RISC-V-Befehle ausführlicher.
Beschreibung
ebreak stoppt das Programm. Der Name ist die Kurzform von environment break. Er markiert einen Punkt, an dem ein Debugger die Kontrolle übernimmt, und dieser Simulator hält die Ausführung an dieser Zeile an. Die Form nimmt keine Operanden.
ebreak
Der Prozessor hält dort an und die nachfolgenden Zeilen werden nicht ausgeführt. Register und Speicher behalten ihre Werte, sodass der Zustand am Haltepunkt anschließend untersucht werden kann. ecall mit Dienst 10 beendet ein Programm normal, und ebreak hält es an einer gewählten Stelle an.
Das RISC-V-Handbuch beschreibt ebreak als Rückgabe der Kontrolle an eine Debugging-Umgebung und definiert es zusammen mit ecall, das eine Dienstleistung von der Umgebung anfordert. Beide verursachen einen präzisen angeforderten Trap, eine bewusste Übergabe der Kontrolle an die Umgebung.
Das Beispiel setzt t0 auf 1 und führt ebreak aus. Das darauffolgende li wird nie ausgeführt, also bleibt t0 bei 1.
Beispiel
li t0, 1 ebreak # the program stops here li t0, 2 # never reached
