www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Was macht (x) & (b) >> (s)?


Autor: Mark M. (mom-jovi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich bin in einem Programm auf das hier gestoßen:
#define BF(x,b,s) (((x) & (b)) >> (s))
Mir ist klar, was hier passiert, aber wozu ist sowas gut? Was heißt BF?

Autor: Stefanie B. (sbs)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hm dann lass uns mal das muntere Raten eröffnen:

x ist der Paramter,
b könnte eine Bitmaske sein
s könnte shift heißen.

Autor: Michael Buesch (mb_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mark M. schrieb:
> ich bin in einem Programm auf das hier gestoßen:
>
#define BF(x,b,s) (((x) & (b)) >> (s))
> Mir ist klar, was hier passiert, aber wozu ist sowas gut? Was heißt BF?

Das kann dir wohl nur der Author des Codes beantworten.
Ich denke aber, dass BF Bitfield heißt. Mit dem Makro kannst du wohl x 
mit b maskieren und dann um s nach rechts shiften. Ich sehe aber 
eigentlich keinen Grund das in einem Makro zu tun und nicht einfach 
offen zu coden. Das wäre IMO lesbarer.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mark M. schrieb:
> ich bin in einem Programm auf das hier gestoßen:
>
#define BF(x,b,s) (((x) & (b)) >> (s))
> Mir ist klar, was hier passiert, aber wozu ist sowas gut? Was heißt BF?

Seltsame Makros kann man oft dadurch ergründen, dass man sich die 
verwendenden Stellen ansieht.

Autor: Mark M. (mom-jovi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Michael Buesch schrieb:
> Ich sehe aber
> eigentlich keinen Grund das in einem Makro zu tun und nicht einfach
> offen zu coden. Das wäre IMO lesbarer.

Das meine ich auch! Aber das ganze Programm ist voll mit solchen 
hässlichen Makros. Ist das üblich, praktisch oder sonst irgendwas?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mark M. schrieb:
> Michael Buesch schrieb:
>> Ich sehe aber
>> eigentlich keinen Grund das in einem Makro zu tun und nicht einfach
>> offen zu coden. Das wäre IMO lesbarer.
>
> Das meine ich auch! Aber das ganze Programm ist voll mit solchen
> hässlichen Makros. Ist das üblich, praktisch oder sonst irgendwas?

Kann man so nicht sagen.
Zeig doch mal einen Ausschnitt, wo das eingesetzt wird.

Autor: Mark M. (mom-jovi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger schrieb:
> Kann man so nicht sagen.
> Zeig doch mal einen Ausschnitt, wo das eingesetzt wird.

Es geht um MSP430-Programmierung. Ich hab hier ne Firmware von TI, die 
modifiziert werden soll. Nun ist der Quelltext nur so gespickt mit 
diesen Makros. Hat jemand einen Tipp, wie ich das Programm angehen soll, 
als Anfänger?

Autor: Floh (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mark M. schrieb:
> Hat jemand einen Tipp, wie ich das Programm angehen soll,
Zeig doch mal her.

Autor: Nonsense (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger schrieb:
> Zeig doch mal einen Ausschnitt, wo das eingesetzt wird.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mark M. schrieb:

> Es geht um MSP430-Programmierung. Ich hab hier ne Firmware von TI, die
> modifiziert werden soll. Nun ist der Quelltext nur so gespickt mit
> diesen Makros. Hat jemand einen Tipp, wie ich das Programm angehen soll,
> als Anfänger?

Am besten geht man sowas an, indem man sich aus dem Anfängerstatus 
heraushievt.
Das heißt: erst mal diese Programm beiseite legen, ein C-Buch schnappen 
und da die ersten paar Kapitel auf dem PC durcharbeiten.

Der Vorteil: Es bricht nicht alles auf einmal auf dich herein, sondern 
das Buch baut dein Wissen in logischen und sinnvollen Schritten auf.

Das meiste von dem, was du in diesem Programm sehen wirst, ist höchst 
wahrscheinlich sehr simpel. Nur bricht eben alles auf einmal auf dich 
herein. Und dann verlierst du den Überblick.

So wie beim Schach: Wenn man gleichzeitig die Figuren, ihre möglichen 
Züge und 8 verschiedene Eröffnungsstrategien auf einmal lernen soll, 
dann verliert man sich.

Autor: Micha S. (e-tec)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist ein sehr schöner vergleich mit schach^^
zeig mal deinen Programmausschnitt, kann dir sicher helfen.
(sollst es ja nicht ganz posten :)

grüße e-tec

Autor: Mark M. (mom-jovi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger schrieb:
> Am besten geht man sowas an, indem man sich aus dem Anfängerstatus
> heraushievt.
> Das heißt: erst mal diese Programm beiseite legen, ein C-Buch schnappen
> und da die ersten paar Kapitel auf dem PC durcharbeiten.

Mit den C-Grundlagen hab ich kein Problem, sondern damit, dass in einer 
Funktion 5 Makros stehen, die nicht nur wiederum Funktionen sind, 
sondern auch noch alle in verschiedenen Headern stehen.

Kann mir da jemand ein gutes Buch empfehlen? Also keines, das mir zum 
100. Mal erklärt, was eine Funktion ist. Hello World kann ich auch schon 
schreiben ;-P Ich suche was, wo auch auf die praktische Anwendung, 
besonders µCs eingegangen wird. Ich kann lange immer die ersten Kapitel 
durcharbeiten, wenn dann nachher irgendwelche µC-Register mit komischen 
Makros abgekürzt sind.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mark M. schrieb:
> Karl heinz Buchegger schrieb:
>> Am besten geht man sowas an, indem man sich aus dem Anfängerstatus
>> heraushievt.
>> Das heißt: erst mal diese Programm beiseite legen, ein C-Buch schnappen
>> und da die ersten paar Kapitel auf dem PC durcharbeiten.
>
> Mit den C-Grundlagen hab ich kein Problem, sondern damit, dass in einer
> Funktion 5 Makros stehen, die nicht nur wiederum Funktionen sind,
> sondern auch noch alle in verschiedenen Headern stehen.

Und?
Die sucht man sich einmal zusammen, sieht sich an was sie machen und 
legt sich das in Gedanken beiseite (oder aber macht sich eine Notiz auf 
einem Schmierzettel)

> Kann mir da jemand ein gutes Buch empfehlen? Also keines, das mir zum
> 100. Mal erklärt, was eine Funktion ist. Hello World kann ich auch schon
> schreiben ;-P Ich suche was, wo auch auf die praktische Anwendung,
> besonders µCs eingegangen wird. Ich kann lange immer die ersten Kapitel
> durcharbeiten, wenn dann nachher irgendwelche µC-Register mit komischen
> Makros abgekürzt sind.

Das wirst du in keinem Buch finden.
Denn wie ein Programmautor seine Makros nennt ist ihm überlassen. Und 
wenn er sie SCHMUTZDIPAP nennt, dem Compiler ist das egal.
Als Leser musst du dir nur merken was die Makros bedeuten, wie sie 
expandieren (oder, eh schon wissen, Schmierzettel)

Diese Frage
> Aber das ganze Programm ist voll mit solchen
> hässlichen Makros. Ist das üblich, praktisch oder sonst irgendwas?
kann man daher nicht pauschal beantworten.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.