was ist das für eine Definition? Assembler

Gast #935672
Lesenswert?
• ▲
▼
Wie immer: bitte mehr Informationen (welcher Processor / Compiler ...)
mehr Quelltext (zumindest eine komplette Funktion, in der REMOVE_ENTER_1 
verwendet wird).

Es ist halt eine Abkürzung, welche -wenn im Quelltext verwendet-  zwei 
Assemblerbefehle einfügt.
Diese manipulieren (bereinigen?) den Stack:
1. den Stackpionter incrementieren (vermutlich das selbe wie POP dummy)
2. den nächsten Stack-Inhalt nach FB speichern, was auch immer das sein 
mag).
Gast #935690
Lesenswert?
• ▲
▼
Hallo Thomas,

das ist aber kein AVR Programm oder?!? Weil die Inline Assembler Befehle
(also das hinter _asm(...)) sind keine AVR Assembler Befehle.


Auf jeden Fall macht das #define folgendes:
Überall im Programmcode wo "REMOVE_ENTER_1" steht, setzt der Compiler
_asm("ADD.W #1,SP"); _asm("POPC FB"); ein.

Der erste Befehl bewirkt, dass die Konstante "1" als Wort (16bit) in die 
Varialble SP geschrieben wird. Wobei SP vermutlich der Stackpointer ist.
Im Klartext SP+=1;

POPC holt vermutlich den Inhalt vom neuen Stackpointerplatz und schreibt 
ihn in die Variable FB. (Keine Ahnung was FB für ne Variable ist). Ich 
hab vermutlich geschrieben, weil ich den Befehl POPC nicht kenne sondern 
nur POP.
Moderator (Firma: Titel) Persönliche Seite #935699
Lesenswert?
• ▲
▼
Es ist M16C.
Tasking-Compiler?
Hier wird die Bankumschaltung manipuliert.

Mit  _asm("ADD.W #1,SP");
wird der Stackpointer um eins höher gesetzt

Mit  _asm("POPC FB");
wird der Wert vom Stack in die Bankumschaltung übertragen

Nur sollte jetzt vorher noch was auf den Stack geschrieben werden???
Poste doch mal so eine Funktion, die das Makro verwendet.


Hier taucht POPC FB auch im Zusammenhang mit Interrupts auf:
http://www.tasking.com/support/M16C/solved_known_problems_v3.1r1.htm
Gast #935767
Lesenswert?
• ▲
▼
Danke für eure Antworten,

Danke für eure Antworten, das erklärt ja schon ein bisschen.
ja ich arbeite mit einem M16C28 und programmiere in HEW.

Ich arbeite mit ZigBee und das sind Funktionen aus dem ZigBee- Stack, 
die ich benutzen kann. Was die wirklich machen und was FB genau für eine 
Variable ist kann man nicht einsehen, da der Stack ist ja nicht 
öffentlich ist

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren