어셈블리어 ROL, ROR을 C언어로 구현해보자
·
리버싱/공부
우선 어셈블리어 ROL과 ROR에 대해 알아보자. dreamhack basic 7번 문제를 풀면서 공부 ROR은 Rotate Right의 약자이고 ROL은 Rotate Left의 약자이다. 쉬프트 연산을 하면서 소거되는 비트의 값이 사라지지 않고 새로 생기는 비트에 복사된다. 말로 설명하면 어려우니 예를 들어보자. 예를 들어 AL에 0X85(1000 0101)가 들어있다고 가정 해보자. ROR AL, 1 -> 0x85를 2진수로 바꾸면 1000 0101 -> 1100 0001이 된다. 보다시피 오른쪽으로 비트가 밀리면서 소거될 1이 왼쪽으로 복사된다. ROR을 C언어로 구현해 보면(최하위 비트가 1일 때 최상위 비트에 1이 복사된다.) 홀수일 때 최하위 비트는 무조건 1이라는 점을 이용해서 만들어보자. ..