Quick question, the condition in the while loop will use arithmetic and relational operators right ? Or is there any way to write the while loop condition?

Anyone have an idea how see if a 32 bit integer has an even or odd number of 1 bits using ONLY bitwise operations?

First, ! and + aren't bitwise operators. Second, yes, I know several ways of doing this. Third, since this is invariably a homework question, the task is for you to do it, not for you to ask someone else for the solution.

Though I'll be nice and provide a partial solution since counting bits without a loop is somewhat non-trivial. It's partial because arithmetic operators are used as well. Your job now is to replace them with bitwise operators:

unsigned bitcount(unsigned v)
{
unsigned c = 0;
v = v - ((v >> 1) & 0x55555555);
v = (v & 0x33333333) + ((v >> 2) & 0x33333333);
c = ((v + (v >> 4) & 0xF0F0F0F) * 0x1010101) >> 24;
return c;
}

Alternatively, you could be pedantic and use the implicit test against 0 for a loop:

unsigned value = n;
while (value) /* Equivalent to "while (value != 0)" */
value >>= 1;

Some teachers may not allow that though, so I wouldn't recommend it without checking first.

Hello there guys! I must implement a linked list in assembly (using MIPS). We're supposed to dynamically allocate memory for the nodes. This is what I am asked to do: ...