2014-06-12 1 views
1

비트 함수를 사용할 때 가장 좋지 않지만 어떻게 작동하는지 알고 싶습니다. 일단 이것이 어떻게 작동하는지 알면 나머지 부분을 알아낼 수 있습니다.PowerPC를 C로 반전

ori r11, r11, 11 

어떻게 C로 변환 할 수 있습니까? 내가 제대로하고 있니?

r11 = (r11 | 11); 

저는 이것이 적절한 C 구문이 아니라는 것을 알고 있습니다. 단지 기본 지식 만 알고 싶습니다.

+0

이것을 자동화 할만한 것을 찾았습니까? C 코드가 컴파일되지 않더라도 어셈블러보다 훨씬 더 읽기 쉽습니다. – rolls

답변

3

ori 명령은 or immediate: ori RA RS UI

입니다 :

RA = the resulting register to store the operation result 
RS = the source register for which to use in the operation 
UI is an unsigned 16-bit integer for the operation 

당신은 그것을 정확하게 해석 한과 C뿐만 아니라 유효 보인다.

PowerPC는 빅 엔디안 아키텍처이므로 big-endian이 아닌 플랫폼 (예 : Intel x86)에서 데이터를 비교할 계획이라면 올바른 결과. 구문이 변경되지 않고 "하위 비트"의 위치가 변경됩니다.

1

ori는 "OR 즉시"이므로 올바른 것입니다. 바람직 될 것이라고 불구하고 C는 너무 괜찮 :

r11 |= 11; 
0

좋은 점은, 많은 PowerPC 명령어가 해당 C 구문과 똑같이 읽히는 것입니다. 예를 들어 추가 명령

add r3,r4,r5 

는 대부분의 명령에 적용되는 문

r3 = r4 + r5; 

내가 말했듯이, 동일합니다. 예외가 있습니다. 예를 들어 상점에는 적용되지 않습니다. 그 외에도 스펙에서 각 니모닉을 찾아 볼 필요가 있습니다.