Hi, I have a Problem with the Shift-Operator >> within my C-Code. I'm using PK166 V4.2 The following code should set the Variable n to 0.
void main() { unsigned char n; unsigned char p; // dummy n=255; n=n>>22; p=0; // dummy }
MOV R5, #0x16 // incorrect Opcode??? SHR R4,R5
"if I shift something with a value of x that means to me that I am shifting x places." And for right-shifts, that works as expected when the value being shifted is unsigned or signed and is positive. It is up to the compiler implementer how to handle a signed negative value's sign bit when shifting right. The implementer is expected to handle it in a documented, defined manner of their choice.