アセンブラを勉強しよう
■ このスレッドは過去ログ倉庫に格納されています
0030デフォルトの名無しさん
2007/03/03(土) 20:12:54rol命令
rol eax
eax = (eax << 1) | ((eax >> 31) & 1);
ror命令
ror eax
eax = ((eax >> 1) & 0x7FFFFFFF) | (eax << 31);
sal命令、shl命令
sal eax
eax <<= 1;
sar命令、shr命令
sar eax
eax = (eax >> 1) & 0x7FFFFFFF | (eax & 0x7FFFFFFF);
shr eax
eax = (eax >> 1) & 0x7FFFFFFF;
C の >> は int の場合は sar で、unsigned の場合は shr で実装されてることもあるが、
それは C の規約で規定されている訳ではない。
というわけで、こうややこしく書いたけど、もしそう実装されていればそれぞれ以下のようにしたのでよい。
eax >>= 1; /* eax は signed int */
eax >>= 1; /* eax は unsigned int */
■ このスレッドは過去ログ倉庫に格納されています