Hey guys, I'm trying to build an instruction pipeline simulator and I'm having a lot of trouble getting started. What I need to do is read binary from stdin, and then store it in memory somehow while I manipulate the data. I need to read in chunks of exactly 32 bits one after the other.
How do I read in chunks of exactly 32 bits at a time? Secondly, how do I store it for manipulation later?
Here's what I've got so far, but examining the binary chunks I read further, it just doesn't look right, I don't think I'm reading exactly 32 bits like I need.
char buffer[4] = {0,0,0,0}; //initialize to 0
unsigned long c = 0;
int bytesize = 4; //read in 32 bits
while( fgets(buffer, bytesize, stdin) ){
memcpy( &c, buffer, bytesize); //copy the data to a more usable structure for bit manipulation later
//more stuff
buffer[0]=0; buffer[1]=0; buffer[2]=0; buffer[3]=0; //set to zero before next loop
}
fclose(stdin);
How do I read in 32 bits at a time (they are all 1/0, no \newlines etc), and what do I store it in, is char[] okay?
EDIT: I'm able to read the binary in but none of the answers produce the bits in the correct order - they are all mangled up, I suspect endianness and problems reading and moving 8 bits around ( 1 char) at a time - this needs to work on windows and C ... ?