- Labornetzteil AliExpress         
Ergebnis 1 bis 9 von 9

Thema: Stacks und Frame ?

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    73
    Beiträge
    11.077

    Frage Stacks und Frame ?

    Hallo!

    Ich denke, dass der BASCOM-Compiler, wie üblich, die Grössen von "HW- und SW-Stack" und "Frame" selber ermittelt. Deshalb möchte ich Euch um praktische Hinweise bitten, weil ich alles ohne unnötiger "Forschung" gleich vom Anfang an richtig mit Spass programmieren möchte. Der Begriff "Frame" bei einem Compiler ist für mich ganz neu und somit unverständlich.

    Meine Frage ist: wie werden die Grössen berechnet, falls es doch selber gemacht werden muss, um alle mögliche Überläufe im Programm sicher zu vermeinden ?

    Falls es aber unmöglich ist, werde ich gerne meine Finger vom Bascom weg lassen.

    Ich bedanke mich herzlich für kurze und für mich, als Bascom Anfänger, verständliche Hilfe im voraus.
    MfG (Mit feinem Grübeln) Wir unterstützen dich bei deinen Projekten, aber wir entwickeln sie nicht für dich. (radbruch) "Irgendwas" geht "irgendwie" immer...(Rabenauge) Machs - und berichte.(oberallgeier) Man weißt wie, aber nie warum. Gut zu wissen, was man nicht weiß. Zuerst messen, danach fragen. Was heute geht, wurde gestern gebastelt. http://www.youtube.com/watch?v=qOAnVO3y2u8 Danke!

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Hallo PICture,
    kurze Antwort wird bei dem Thema schwierig.
    Wenn es um die AVR Controller geht ( nach deinem letzten Link zum Bascom LT Manual bin ich da nicht mehr sicher), dann höchstens dies:
    Bascom macht es nicht selber, du musst die richtigen Werte vorgeben.
    Wie die zustande kommen ist in vielen Foren und in der Hilfe von Bascom erklärt. Siehe dazu die Stichworte
    $HWStack, $SWStack, $FrameSize, $HWCHECK, $SoftCheck, $FrameCheck, , $DBG, STCheck

    Alles hier noch mal zu erklären, wäre etwas viel. Wenn du gezielte Fragen hast, sollte es aber kein Problem sein, die zu beantworten.

  3. #3
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    73
    Beiträge
    11.077
    Hallo for_ro,

    ich habe auf deine Antwort schon üblicherweise gewartet und möchte ich mich bei dir für immer sehr schnelle, kompetente und klare Antwort bedanken.

    Mir ist schon alles klar, weil ich Bascom schon etwas "studiert" habe und werde keine Fragen mehr stellen. Für mich ist immer etwas einfacheres suchen, als bereits vorhanden, ganz normal. In dem Fall bleibe ich mit Spass in meiner problemloser PICerei. Ich habe eben keine Zeit (sprich: Lust) ein Taschenrechner für Bascom zu sein.
    Geändert von PICture (07.12.2011 um 20:07 Uhr)
    MfG (Mit feinem Grübeln) Wir unterstützen dich bei deinen Projekten, aber wir entwickeln sie nicht für dich. (radbruch) "Irgendwas" geht "irgendwie" immer...(Rabenauge) Machs - und berichte.(oberallgeier) Man weißt wie, aber nie warum. Gut zu wissen, was man nicht weiß. Zuerst messen, danach fragen. Was heute geht, wurde gestern gebastelt. http://www.youtube.com/watch?v=qOAnVO3y2u8 Danke!

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.703
    Blog-Einträge
    133
    Hallo PICture,

    wenn Deine Frage nicht schon erledigt wäre, hätte ich vorgeschlagen noch mal auf diese Seite und speziell hier: http://halvar.at/elektronik/kleiner_...swstack_frame/ nachzusehen.

    Ansonsten gibt der Compiler Meldungen aus, wenn zu große Stackwerte eingetragen werden bzw wenn der SRAM durch zu viele/große Variablen gesprengt wird. Leider berechnet Bascom die Werte nicht im voraus.

    Die Meldungen des Compilers decken auch nicht alle Probleme ab, besonders nicht die, die zur Laufzeit auftreten können.

    Für meine kleinen Anfängerprogramme auf kleinen µC haben mir die $xSTACK und FRAME Eintragungen die geringsten Probleme beschert.

    Gruß
    Searcher
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  5. #5
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    73
    Beiträge
    11.077
    Hallo Searcher!

    Vielen Dank für deine wertfolle Hinweise. Ich gebe nicht so einfach auf, wie das aus meinem letzten Beitrag in diesem Thread aussieht.

    Ich habe als ASMan auf Bascom geschaut und ausser Frame scheint mir jetzt alles hoffentlich klar geworden, sonst bitte korriegieren.

    HW Stack : dort werden immer 2-Byte Rücksprungsadressen für jede momentan gleichzeitig laufende SUB's und INT's ab - gelegt und geholt.

    SW Stack : dort werden alle Variablen, je nach Typ, mit entsprechender Grösse von 1 bis 4 Byte plaziert.

    Frame : leider dafür habe ich nichts für mich verständliches gefunden und muss ich Euch um einfache Erklärung bitten, da ich den Dialekt von Profiprogrammierer nicht verstehe. Ich vermute, dass es dort alle benutzte "labels"/Markenadressen (z.B. von Loop's) vom Programm abgelegt werden.

    So wie die meisten Anfänger möchte ich immer möglichst genau wissen, falls möglich, was ich tue.
    Geändert von PICture (08.12.2011 um 15:52 Uhr)
    MfG (Mit feinem Grübeln) Wir unterstützen dich bei deinen Projekten, aber wir entwickeln sie nicht für dich. (radbruch) "Irgendwas" geht "irgendwie" immer...(Rabenauge) Machs - und berichte.(oberallgeier) Man weißt wie, aber nie warum. Gut zu wissen, was man nicht weiß. Zuerst messen, danach fragen. Was heute geht, wurde gestern gebastelt. http://www.youtube.com/watch?v=qOAnVO3y2u8 Danke!

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Zitat Zitat von PICture Beitrag anzeigen
    Hallo Searcher!

    Vielen Dank für deine wertfolle Hinweise. Ich gebe nicht so einfach auf, wie das aus meinem letzten Beitrag in diesem Thread aussieht.
    Und ich dachte, du wärst raus aus der Nummer. Hätte mich aber ehrlich gesagt auch gewundert.

    Ich habe als ASMan auf Bascom geschaut und ausser Frame scheint mir jetzt alles hoffentlich klar geworden, sonst bitte korriegieren.

    Zitat Zitat von PICture Beitrag anzeigen
    HW Stack : dort werden immer 2-Byte Rücksprungsadressen für jede momentan gleichzeitig laufende SUB's und INT's ab - gelegt und geholt. Ja, und die Register, die Bascom bei einem Interrupt automatisch speichert.
    Zitat Zitat von PICture Beitrag anzeigen
    SW Stack : dort werden alle Variablen, je nach Typ, mit entsprechender Grösse von 1 bis 4 Byte plaziert. Nein. Hier liegen nur die Adressen der Variablen, nicht deren Inhalte. Also alle übergebenen Parameter einer Sub und Funktion und die lokalen Variablen. Immer 2 Byte pro Adresse. Wenn du mit Double Typen arbeitest, liegen hier auch einige von Bascom genutzte Adressen.
    Zitat Zitat von PICture Beitrag anzeigen
    Frame : leider dafür habe ich nichts für mich verständliches gefunden und muss ich Euch um einfache Erklärung bitten, da ich den Dialekt von Profiprogrammierer nicht verstehe. Ich vermute, dass es dort alle benutzte "labels"/Markenadressen (z.B. von Loop's) vom Programm abgelegt werden. Nein, hier liegen nun die Werte der Variablen, falls sie per ByVal in die Sub oder Funktion übergeben wurden und die Werte der lokalen Variablen. Strings können übrigens auch per ByVal übergeben werden. Bedarf also je nach Typ der Vairablen. Zusätzlich beansprucht Bascom von den angebenen Bytes noch 24 für Typ Konvertierungen, speziell zur Ausgabe per Print oder auf's LCD.
    Zitat Zitat von PICture Beitrag anzeigen
    So wie die meisten Anfänger möchte ich immer möglichst genau wissen, falls möglich, was ich tue.
    Da du aber jede Menge Erfahrung in ASM hast, solltest du dir unbedingt den Simulator von Bascom ansehen. Gerade bei den Stack und Frame Sachen ist der sehr hilfreich. Dann kannst du noch die $DBG Direktive einschalten. Dadurch wird neben etwas Code auch der Stack und Frame mit den Buchstaben H, S und F vorbesetzt. So kannst du sehen, was schon alles beschrieben worden ist.

Ähnliche Themen

  1. HW-/SW-Stack und Frame, wo Physikalisch wenn ich XRam habe?
    Von Dnerb im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 9
    Letzter Beitrag: 25.02.2007, 23:57
  2. USB Frame-Grabber mit Mikrocontroller nutzen
    Von mwoidt im Forum Elektronik
    Antworten: 4
    Letzter Beitrag: 01.10.2006, 20:53

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen