unterprogramm und rücksprung

Gast #32959
hallo

mal eine generelle frage zu pics: kann man aus einem unterprogramm 
mittels "goto" rausgehen? im extremfall würde vielleicht das 
unterprogramm gar nicht mit "return" beendet werden.
geht das ?

bspw. so:


call  unterp
nop
nop
...

unterp
      goto Ende
      return


ende
   nop
   nop

   end
Gast #32960
das geht solange gut, bis der Stack überläuft. Solchen Mist sollte man 
sich erst gar nicht angewöhnen. Call wird mit return beendet - basta.
Es gibt nur wenige sinnvolle Ausnahmen von dieser Regel, allerdings muß 
man dann den SP manuell manipulieren, geht gar nicht bei allen 
Prozessoren.
Gast #32962
Das einzige was mir dazu einfällt ist den Stackpionter gewollt 
überlaufenzulassen - mit 7 weiteren CALLs um auf den Stackeintrag vor 
dem betreffenden CALL kommen.

Ob das geht weiß ich nicht, solche Schweinereien mag ich nicht so gern.



..
..
..
  call fillstack_1
fillstack_1:
  call fillstack_2
fillstack_2:
  call fillstack_3
fillstack_3:
  call fillstack_4
fillstack_4:
  call fillstack_5
fillstack_5:
  call fillstack_6
fillstack_6:
  call fillstack_7
fillstack_7:
  goto  xyz


Für Peter D. ein gefundenes Fressen ;)

MooseC
Gast #32963
Nee, laß man lieber. Das würde nur im Level 1 des Stackpointers gehen, 
weil Du ja sonst die anderen noch gültigen Rückkehradressen vernichtest.

MooseC
#32964
@Moose,

"Für Peter D. ein gefundenes Fressen ;)"

nein, denn daß ist ja kein Nachteil einer Architektur, wenn sie 
unsauberes Programmieren nicht unterstützt.


Verrücktes Pferd hat da völlig recht: CALL->RETURN und nichts anderes.


Wenn man sich erstmal einen vernünftigen Ablaufplan gemacht hat, statt 
sofort Spaghettikode einzuhacken, wird man auch sehen, daß dafür auch 
immer die Möglichkeit besteht.


Peter
Gast #32965
Ja das stimmt, saubere abgeschlossene Module sind oberstes Gebot.
Das war auch nicht gemeint, sondern das Fehlen von PUSH/POP oder 
sonstigen Stackoperationen, die einem die Möglichkeit von lokalen 
Variablen oder Parameterübergaben ermöglichen.

Da hätte ich eigentlich eine Reaktion von Dir erwartet, nach der 
Auseinandersetzung mit dem "zufriedenen PIC-User" gestern.

Hoffentlich fühlt der sich jetzt nicht wieder auf den Schlips getreten.


Diese PIC-Sachen arten ja immer in einer art Glaubenskrieg aus...

MooseC

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 23 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.