Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Linux/arch/arm/mach-sa1100/include/mach/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 2 kB image not shown  

Quelle  bitfield.h   Sprache: C

 
/*
 * FILE     bitfield.h
 *
 * Version  1.1
 * Author   Copyright (c) Marc A. Viredaz, 1998
 *          DEC Western Research Laboratory, Palo Alto, CA
 * Date     April 1998 (April 1997)
 * System   Advanced RISC Machine (ARM)
 * Language C or ARM Assembly
 * Purpose  Definition of macros to operate on bit fields.
 */




#ifndef __BITFIELD_H
#define __BITFIELD_H

#ifndef __ASSEMBLY__
#define UData(Data) ((unsigned long) (Data))
#else
#define UData(Data) (Data)
#endif


/*
 * MACRO: Fld
 *
 * Purpose
 *    The macro "Fld" encodes a bit field, given its size and its shift value
 *    with respect to bit 0.
 *
 * Note
 *    A more intuitive way to encode bit fields would have been to use their
 *    mask. However, extracting size and shift value information from a bit
 *    field's mask is cumbersome and might break the assembler (255-character
 *    line-size limit).
 *
 * Input
 *    Size       Size of the bit field, in number of bits.
 *    Shft       Shift value of the bit field with respect to bit 0.
 *
 * Output
 *    Fld        Encoded bit field.
 */


#define Fld(Size, Shft) (((Size) << 16) + (Shft))


/*
 * MACROS: FSize, FShft, FMsk, FAlnMsk, F1stBit
 *
 * Purpose
 *    The macros "FSize", "FShft", "FMsk", "FAlnMsk", and "F1stBit" return
 *    the size, shift value, mask, aligned mask, and first bit of a
 *    bit field.
 *
 * Input
 *    Field      Encoded bit field (using the macro "Fld").
 *
 * Output
 *    FSize      Size of the bit field, in number of bits.
 *    FShft      Shift value of the bit field with respect to bit 0.
 *    FMsk       Mask for the bit field.
 *    FAlnMsk    Mask for the bit field, aligned on bit 0.
 *    F1stBit    First bit of the bit field.
 */


#define FSize(Field) ((Field) >> 16)
#define FShft(Field) ((Field) & 0x0000FFFF)
#define FMsk(Field) (((UData (1) << FSize (Field)) - 1) << FShft (Field))
#define FAlnMsk(Field) ((UData (1) << FSize (Field)) - 1)
#define F1stBit(Field) (UData (1) << FShft (Field))


/*
 * MACRO: FInsrt
 *
 * Purpose
 *    The macro "FInsrt" inserts a value into a bit field by shifting the
 *    former appropriately.
 *
 * Input
 *    Value      Bit-field value.
 *    Field      Encoded bit field (using the macro "Fld").
 *
 * Output
 *    FInsrt     Bit-field value positioned appropriately.
 */


#define FInsrt(Value, Field) \
                 (UData (Value) << FShft (Field))


/*
 * MACRO: FExtr
 *
 * Purpose
 *    The macro "FExtr" extracts the value of a bit field by masking and
 *    shifting it appropriately.
 *
 * Input
 *    Data       Data containing the bit-field to be extracted.
 *    Field      Encoded bit field (using the macro "Fld").
 *
 * Output
 *    FExtr      Bit-field value.
 */


#define FExtr(Data, Field) \
                 ((UData (Data) >> FShft (Field)) & FAlnMsk (Field))


#endif /* __BITFIELD_H */

Messung V0.5
C=95 H=100 G=97

¤ Dauer der Verarbeitung: 0.12 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.