- 3D-Druck Einstieg und Tipps         
Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 26

Thema: Register sichern in eigenen Assembler Funktionen

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    52
    Beiträge
    2.236

    Register sichern in eigenen Assembler Funktionen

    Hallo,

    Ich möchte gerne ein paar Funktionen in Assembler auslagern
    (in einer .S Datei), was auch an für sich gut geklappt hat.
    Was ich mich allerdings frage, muß ich immer den Inhalt von den Registern mit dennen ich arbeite sichern (push, pop) oder ist das nicht notwendig ?
    Wenn ich in einer Funktion Parameter erwarte werden sie ja in Registern R24 nach oben hin abgelegt, das ist klar, aber wenn ich keine erwarte, dürfte ich sie doch nach belieben beschreiben, oder muß man zwingend den Inhalt "retten" ?

    Gruß Sebastian

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.802
    Disclaimer: none. Sue me.

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    52
    Beiträge
    2.236
    Danke Sprinter,
    ich hab in Deinem Artikel schon geguckt, aber das habe ich überlesen

    Das heißt also, daß ich die R18-R27 verwenden darf, und den Inhalt nicht mehr herzustellen brauch.
    Und mit dem "runden" meinst Du daß LSB immer auf einem geradem (24,22,20 usw.) Register liegt, zwei chars z.B R24 und R22 ?

    Gruß Sebastian

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.802
    So ist es.

    Zudem kannst du das Z-Register R31:R30 verwenden, ohne es zu restaurieren. Auch Parameterregister kannst du überheinern, ohne sie wieder herzustellen. Es sei denn, du ruftst von deinem asm aus selber Funktionen auf, die Parameter-Register unterhalb von R18 brauchen.
    Disclaimer: none. Sue me.

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    52
    Beiträge
    2.236
    super, danke Du hast mir sehr geholfen,
    vielleicht könntest Du mir noch eine kleine Frage beantworten, und zwar
    hab ich in Peter Fleury I2C Routine folgende Zeilen gefunden, die mir nichts sagen:
    Code:
    .stabs	"",100,0,0,i2c_delay_T2
    
    	.stabs	"i2cmaster.S",100,0,0,i2c_delay_T2
    
    	.func i2c_delay_T2	; delay 5.0 microsec with 16  Mhz crystal
    .func ist klar, aber die zwei .stabs ? und vor alem die Parammeter...
    Es geht sich nicht um diese speziele Routine, sondern um es allgemein zu verstehen...
    *Hoffnungsvoll nach oben guckend*

    Gruß Sebastian

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.802
    Alternativ könntest du die Funktionen als C-Stubs machen, die nur Inline Assembler enthalten. In dem Falls übernimmt avr-gcc die Registerverwaltung/-sicherung, Einsortierung von Parametern, return-Wert etc.
    Disclaimer: none. Sue me.

  7. #7
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.802
    Das sind debug-Infos im stabs-Format. Was die sagen weiß ich net, da müsstest du stabs lernen. (dwarf ist nochmal übler).

    Übersetz doch mal ein C-File mit -g oder
    -gstabs Generate debug information in STABS format
    -gstabs+ Generate debug information in extended STABS

    Das erste ist glaub die Zeilennummer. Am besten lässt du das den Debugger machen, der weiß, wie das zu lesen ist

    In Code resultiert das nicht, landen tut es in einer .stab*-Section (bei elf) in hex ist AFAIK keine Debug-Info drinne.
    Disclaimer: none. Sue me.

  8. #8
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    52
    Beiträge
    2.236
    Danke, nur Debugger-Infos, also nichts was mit Programmablauf zu tun hat...
    Ich glaube, ich muß mich auch mal mit dem gdb auseinandersetzen (so ein kurzes Leben, und so viele Sachen zu lernen)
    Mit dem Inline Assembler hast Du sicher recht, nur mit seinem Syntax komm ich irgendwie noch nicht so richtig zurecht, aber das kommt noch.
    Ich möchte mich nochmal für die schnelle und gute Hilfe bedanken.

    Gruß Sebastian

  9. #9
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.802
    Ja, die Syntax ist recht vertrackt. Vielleicht hilft ja der neue Artikel über Inline-Assembler weiter.

    Längere Funktionen schreibt man jedenfalls bequemer direkt in Assembler, aber gerade wenn man sich selber um die Registerallokierung kümmern muss ist das nervig.
    Disclaimer: none. Sue me.

  10. #10
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    52
    Beiträge
    2.236
    Vielleicht hilft ja der neue Artikel über Inline-Assembler weiter.
    Bist Du einen am schreiben?
    Das fänd ich gut, vor allem, weil es halt irgendwie Artikel dieser Art im Netz nicht zu finden sind.

    Gruß Sebastian

Seite 1 von 3 123 LetzteLetzte

Berechtigungen

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

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad