CHIP8 에뮬레이터를 쓰고 있습니다. 나는 opcode DXYN
을 제외하고 지금까지 모든 것을 썼다. 나는 그것에 대한 설명이 필요했다. 그래서 그 질문에 대한 대답으로 코드를 찾았다. 코드를 읽는 동안 C에서 말하는이 코드 조각에 붙어있어 if((data & (0x80 >> x)) != 0)
정확히 (data & (0x80 >> x))
은 무엇을합니까?CHIP8 에뮬레이터의 코드 이해
0
A
답변
2
우리가 그것을 분할하는 경우, 우리는 바로 x
비트에 의한 값 128
(0x80
)를 이동
0x80 >> x
있습니다.
다음 부분은 data
의 마스크로 이전 결과를 사용하여 data
에 설정된 특정 비트가 있는지 확인합니다.
그러면 비트가 설정되어 있는지 확인하기 위해 전체를 0으로 확인합니다.
3
if
문은 바이트에 비트 #x가 설정되어 있는지 확인하고 0을 최상위 비트로 계산합니다.
Bit#
01001010 (0x4A has bit 1, 4 and 6 set)
(data & (0x80 >> x)) returns 0x40 for x=1
0x08 for x=4
0x02 for x=6
0x00 for all other values.
if((data & (0x80 >> x)) != 0)