Naja, C macht einige Dinge einfacher und übersichtlicher als Asm.GerdV hat geschrieben:Grund dafür ist, dass ich den Pythagoras bemühen muss um meinen Kurs zu bestimmen.
Ich brauche die Funktionen cos(x) und arctan(x) dafür, das ist der einzige Grund für mich im Moment um C zu lernen bzw. damit zu Programmieren.
Solange das Programm läuft, bleibt der Inhalt der Variablen selbstverständlich erhalten.GerdV hat geschrieben:Meine Frage zielte bislang immmer darauf hin, ob das Ergenis meiner Rechenfunktion, bislang ja nur die Subtraktion, fest im RAM erhalten bleibt und ob das so mit den Werten als globale Variablen funktioniert.
Wovon dann?GerdV hat geschrieben:Ich rede zwar hier von Assembler, meine aber damit nicht den Source-Code!
Maschinensprache, also die aneinanderreihung von Op-Codes?
Doubles sind Floating-Points. (http://de.wikipedia.org/wiki/Gleitkommazahl)GerdV hat geschrieben:Ich weiss nicht wie im Maschinencode eine Variable double abgespeichert bzw. aufgelöst wird.
Das erste bit ist das Vorzeichen, es folgt ein Exponenent von 11 Bit (welcher binär 100'0000'0000 == 0, kleiner entsprechend -1, -2 ... und größer entsprechend 1, 2...). Es folgt die Mantisse über 52 Bit, der das erste '1'-Bit feht - das sogenannte Hidden-Bit.
1 ist entsprechend ( Vorzeichen | Exponennt | [HiddenBit:1] Mantisse )
0 | 100'0000'0000 | 0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000
1,25 entspricht ( 1 * 2^0 + 0 * 2 ^ -1 + 1 * 2 ^ -2)
0 | 100'0000'0000 | 0100'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000
2 entspricht ( 1 * 2 ^ 1 - Exponent um 1 erhöht)
0 | 100'0000'0001 | 0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000
0,25 entspricht ( 1 * 2 ^-2, Exponent um 2 erniedrigt)
0 | 011'1111'1101 | 0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000
Variablen bleiben unverändert erhalten, solange Du sie nicht veränderst ( Zuweisung: =, Erhöhung: ++ oder Erniedrigung: --)GerdV hat geschrieben:Meine einzige Frage zum meinem C-Code ist nun:
Werden für die Rechenoperation die globalen Variablen mit ihren Werten verwendet, so wie ich sie deklariert habe?
Wird das Ergebnis auch in der entsprechenden globalen Variable gespeichert?
Bleiben die Variablen A_Breite und Z_Breite mit ihren Werten erhalten?
Die errechnete Zahl kann nicht ewig lang werden. Ein Double ist 8 Byte groß. Ist die Zahl zu groß, kann sie nicht gespeichert werden.GerdV hat geschrieben:Register und Ports fallen auch flach, denn die errechnete Zahl kann ja ewig lang sein.
In meinem Beispiel benutzt der Compiler laut Assemblerlisting wohl 4 Byte für je einen double-Wert mit Komma.
Macht der Compiler aus den Doubles nur 4 Byte, so sind es Floats: Dann ist die Mantisse und der Exponent entsprechend kleiner: Die Werte laufen schneller über.