Inefficient code

Bernd Edlinger bernd.edlinger@hotmail.de
Fri Jul 6 10:18:00 GMT 2018


You can get much better code if you make xrci a bit field.
so the entire bit filed region can be accessed word-wise:


#include <stdint.h>

struct Xrb
{
    uint16_t xrlen;             /* Length of I/O buffer in bytes */
    uint16_t xrbc;              /* Byte count for transfer */
    void * xrloc;               /* Pointer to I/O buffer */
    uint8_t xrci:8;             /* Channel number times 2 for transfer */
    uint32_t xrblk:24;  /* Random access block number */
    uint16_t xrtime;    /* Wait time for terminal input */
    uint16_t xrmod;             /* Modifiers */
};

void test(struct Xrb *XRB)
{
    XRB->xrblk = 5;
}


Bernd.


More information about the Gcc mailing list