1/5 Einführung Calculator
Theorie
Der CT-Board-Simulator bietet als Hilfswerkzeug einen Rechner (Calculator) an. Dieser unterscheidet sich von einem herkömmlichen Rechenprogramm dadurch, dass die Berechnungen wie in der simulierten Arithmetic Logic Unit (ALU) des CT-Board-Simulators durchgeführt werden. Das ist wichtig, weil Programmierer*innen beim Schreiben von Assemblercode oft Berechnungen durchführen und dabei die hardwarespezifischen Limitierungen beachten müssen.
Diese hardwarespezifischen Limitierungen haben zur Folge, dass auch der Calculator einige Einschränkungen aufweist. Zum Beispiel kann die ALU im CT-Board Simulator nur mit ganzen Zahlen rechnen. Brüche wie 1/8 = 0,125 können von der ALU nicht direkt berechnet werden, dementsprechend steht die Division als Rechenoperation nicht zur Verfügung.
Ausserdem ist der darstellbare Zahlenbereich durch die ALU-Size begrenzt. Der Calculator stellt folgende Modi zur Verfügung, wobei die ALU des CT-Board-Simulators immer in 32-Bit operiert.
| ALU-Size Mode | Bereich (unsigned) | Bereich (signed) |
|---|---|---|
| 8-Bit | 0 bis 255 | -128 bis 127 |
| 16-Bit | 0 Bis 65'535 | -32'768 bis 32'767 |
| 32-Bit | 0 bis 4'294'967'295 | -2'147'483'648 bis 2'147'483'647 |
Wenn der geschriebene Code eine solche Limitierung überschreiten könnte, müssen die Programmierer*innen nach jeder Rechenoperation überprüfen, ob diese erfolgreich war. Hierfür können die Flags der letzten Rechenoperation verwendet werden. Im Fall des CT-Board-Simulators werden diese auch nach jeder Rechenoperation aktualisiert und angezeigt. Folgende Flags sind relevant.
| Flag | Bedeutung | Relevanz Interpretation | Relevanz Rechenoperation |
|---|---|---|---|
| Zero | Das Ergebnis der letzten Rechenoperation ist null. | Signed, Unsigned | Addition, Subtraktion und Multiplikation |
| Negative | Das Ergebnis der letzten Rechenoperation ist negativ. | Signed | Addition, Subtraktion und Multiplikation |
| Carry | Die letzte Rechenoperation konnte aufgrund der Beschränkung nicht korrekt berechnet werden und erfordert zusätzliche Schritte. | Unsigned | Addition, Subtraktion |
| Overflow | Die letzte Rechenoperation konnte aufgrund der Beschränkung nicht korrekt berechnet werden und erfordert zusätzliche Schritte. | Signed | Addition, Subtraktion |