Zeiger inkrementieren
-
+fricky schrieb:
supertux schrieb:
+fricky schrieb:
^^oder: an der adresse befindet sich überhaupt kein speicher und die cpu löst eine exception aus, z.b. den gefürchteten 'data abort' bei ARM prozessoren.
die hab ich so oft gesehen
die kann sogar nützlich sein. ich hab' sie mal benutzt, um eine speichererweiterung zu implementieren. 1MB unbenutzter adressraum wird im exception-handler auf einen seriellen RAM-baustein gemappt. ist zwar um ein vielfaches langsamer, als zugriffe auf internes RAM, aber für den code völlig transparent.
ich weiß, es kann sehr nützlich sein. Ich hatte einen fiessen Bug in meinem Context-Switch Code, den ich ich erst durch eine abort excepction entdeckt hatte. Ohne dieses abort wäre ich nie drauf gekommen. Ein anderes Mal habe ich den Stack-Pointer für eine Sondertask falsch berechnet und nach 2 Stunden Laufzeit *kraaach* data abort. Ohne diese Exception hätte ich diesen Bug nicht einmal vermutet.
-
supertux: falls du's noch nicht kennst: http://www.design-reuse.com/articles/14079/how-to-use-arm-s-data-abort-exception.html
-
+fricky schrieb:
supertux: falls du's noch nicht kennst: http://www.design-reuse.com/articles/14079/how-to-use-arm-s-data-abort-exception.html
cool, kannte es gar nicht, das werde ich mir in Ruhe anschauen. Was mir jedenfalls sofort gefallen hat: "Computers are like Old Testament gods; lots of rules and no mercy."