이미 존재하지 않는 회사의 10여년전 프로그램을 다시 써야할 일이 생겨서 뜯어보고 있습니다.
어셈블리어인데 c코드로 바꿔보자면
some_sub_call(DWORD Arg) {
DWORD A = Arg + 0x7EFEFEFF;
DWORD B = Arg ^ 0xFFFFFFFF;
DWORD C = A ^ B;
DWORD D = C & 0x81010100;
if(C == 0) //문제의 조건
당췌 저 비트연산이 어떤 의미가 있는지 모르겠네요.
C==0이 되는 것과 Arg와 대충 어떤 관계, 그러니까 몇번째 비트가 0이면 0이된다든지 하는 관계, 인지 감도안오네요.
어떤 비트를 검사하는 거다 설명해주시면 매우 감사하구요.
대체 왜 이런 연산을 해서 검사하는 것인지 아무 짐작이라도 말씀해주시면 감사하겠습니다.