🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

1 total messages Started by Jim Vaxkiller Mon, 03 Nov 1986 23:53
mapping C to hardware
#9711
Author: Jim Vaxkiller
Date: Mon, 03 Nov 1986 23:53
47 lines
2448 bytes
Is there a 'good' way to map C to hardware?  Some specific examples are:

1)  In my hardware both pointers and ints are 16 bits.  I'm setting
    up data structures to be traversed by microcode and whether
    it's a pointer or data depends on where it is and how the microcode
    got there.  The way I'm doing it now is

    typedef union {
	int *ptr;		/* might be a pointer */
	int data;		/* but then again, could be data */
    } bsptr;			/* be nice, it's bit slice pointer */

2)  How about mapping bit fields into words?  For example, I have

	typedef struct {
		cmd : 5;	/* command word, bits 15-11 */
		type : 1;	/* xmit/receive, bit 10 */
		subaddr : 5;	/* subaddress, bits 9-5 */
		words : 5;	/* word count, bits 4-0 */
	} data1553;

    The individual fields MUST be in the bits specified.  I could just
    OR the data into the word but it would be 'cleaner' to use bit
    fields.

3)  There are instances where I have 2 eight bit datums and
    I need to store them together in 1 16 bit word.  Now I do a

	*stash = (word) (hibyte << 8) + (lobyte & 0xf);

    Is  there a better way?  Also, I have some 16 bit counters and need
    to be sure the data is stored with the hi byte in bits 15-8.

4)  I have some 32 bit counters that need to be stored with bits
    31-16 in one word, then bits 15-0 in the next word.  Now I have
    a union, one entry being a long and the other 2 ints.  Byte ordering
    is very important here, see the previous question.


Probably the most important thing here is the results must be portable.
I'll probably write and debug most of it on a PC clone and VAX, then
download it into the actual hardware.  The target microprocessor is
a 68010, which gives 3 widely differing architectures I need to work
in.  Also, we may change compilers sometime down the road.

Please don't flame my syntax, I don't use typedefs and bit fields every
day and don't feel like digging out my K&R book.
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads