[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [avr-gcc-list] gcc binary
From: |
Anton Erasmus |
Subject: |
Re: [avr-gcc-list] gcc binary |
Date: |
Wed, 03 Mar 2004 22:09:00 +0200 |
On 2004/03/03 at 11:42 cswiger wrote:
>This should be simple: does gcc not support binary ???
[Stuff snipped]
Hi,
Here is a post from comp.sys.embedded that gives nice macros for
binary constants.
*** Start of quoted message ****
From: address@hidden (Tom Torfs)
Hello All,
I've been missing the lack of support for binary numeric literals in
C. To get around it I wrote the following handy macros, which allows
you to simply write something like:
whatever = B8(10101010);
and will translate as:
whatever = 85;
(compile-time constant)
Code below... hopefully it's useful to some of you as well.
greetings,
Tom
/* Binary constant generator macro
By Tom Torfs - donated to the public domain
*/
/* All macro's evaluate to compile-time constants */
/* *** helper macros *** /
/* turn a numeric literal into a hex constant
(avoids problems with leading zeroes)
8-bit constants max value 0x11111111, always fits in unsigned long
*/
#define HEX__(n) 0x##n##LU
/* 8-bit conversion function */
#define B8__(x) ((x&0x0000000FLU)?1:0) \
+((x&0x000000F0LU)?2:0) \
+((x&0x00000F00LU)?4:0) \
+((x&0x0000F000LU)?8:0) \
+((x&0x000F0000LU)?16:0) \
+((x&0x00F00000LU)?32:0) \
+((x&0x0F000000LU)?64:0) \
+((x&0xF0000000LU)?128:0)
/* *** user macros *** /
/* for upto 8-bit binary constants */
#define B8(d) ((unsigned char)B8__(HEX__(d)))
/* for upto 16-bit binary constants, MSB first */
#define B16(dmsb,dlsb) (((unsigned short)B8(dmsb)<<8) \
+ B8(dlsb))
/* for upto 32-bit binary constants, MSB first */
#define B32(dmsb,db2,db3,dlsb) (((unsigned long)B8(dmsb)<<24) \
+ ((unsigned long)B8(db2)<<16) \
+ ((unsigned long)B8(db3)<<8) \
+ B8(dlsb))
/* Sample usage:
B8(01010101) = 85
B16(10101010,01010101) = 43605
B32(10000000,11111111,10101010,01010101) = 2164238933
*/
greetings,
Tom
_______________________________________________
avr-gcc-list mailing list
address@hidden
http://www.avr1.org/mailman/listinfo/avr-gcc-list
- [avr-gcc-list] gcc binary, (continued)
- [avr-gcc-list] gcc binary, cswiger, 2004/03/03
- Re: [avr-gcc-list] gcc binary, Douglas Dotson, 2004/03/03
- Re: [avr-gcc-list] gcc binary, E. Weddington, 2004/03/03
- Re: [avr-gcc-list] gcc binary, cswiger, 2004/03/03
- Re: [avr-gcc-list] gcc binary, Joerg Wunsch, 2004/03/03
- Re: [avr-gcc-list] gcc binary, E. Weddington, 2004/03/03
- Re: [avr-gcc-list] gcc binary, Douglas Dotson, 2004/03/03
- Re: [avr-gcc-list] gcc binary, Erik Christiansen, 2004/03/03
- Re: [avr-gcc-list] gcc binary, Yura Galayda, 2004/03/04
- Re: [avr-gcc-list] gcc binary, Yura Galayda, 2004/03/05
- Re: [avr-gcc-list] gcc binary,
Anton Erasmus <=
Re: [avr-gcc-list] Gcc bug??, David Gay, 2004/03/03
RE: [avr-gcc-list] Gcc bug??, Dave Hylands, 2004/03/03
[avr-gcc-list] Gcc bug??, Brian Cuthie, 2004/03/10