2014-12-18 1 views
1

저는 특히 어셈블리 및 PowerPC 어셈블리가 비교적 새 것이므로이 질문에 대해 저에게 꼭 알려주십시오. 나는 주위를 둘러 보았다했지만 실제로 이와 같은 명령에 점, 추가 할 때 비교하는 방법을 정확하게 값으로 정확한 답을 발견하지 않았습니다 :도트를 명령어에 추가 할 때 값을 비교하는 방법

clrlwi. r0, r0, 29 # clear left word immediate 

이이 값으로 r0의 원래 값을 비교 하는가를 비트를 지운 후에 계산되거나 프로그래밍 언어에서 if (variable)과 같은 것입니까? this page에, 그것이 말하는 모든 점을 추가하는

cmpwi rD, 0 

의 동등한은 그러나 정확히이 값이 레지스터 번호 인 경우 또는 해당 구문이 정확하게 표시되지 않기 때문에 등록을 비교 무엇을 나에게 불분명이다 즉시 정수 ...

답변

2

도트는 CR0 플래그 (비트 CR의 0..3)를 명령의 결과에 기초하여 갱신된다는 것을 의미한다.

cr0은 비 직접적인 피연산자를 사용하는 고정 소수점 계산 명령어의 결과 (일부 예외가 있음)에 사용됩니다. 계산 결과는 0과 비교되고 적절한 비트가 설정됩니다 (음수, 0 또는 양수).
계산 지침에서 cr0으로 설정하려면 명령 끝에 마침표 (.)를 추가하기 만하면됩니다. 예를 들어, add 4, 5, 6은 레지스터 6을 레지스터 5에 추가하고 cr0에 상태 비트를 설정하지 않고 결과를 레지스터 4에 저장합니다. 그러나 add. 4, 5, 6은 동일한 작업을 수행하지만 계산 된 값을 기준으로 cr0의 비트를 설정합니다.

CR0 비트 :

0: Negative (LT) - This bit is set when the result is negative 
1: Positive (GT) - This bit is set when the result is positive (and not zero) 
2: Zero (EQ)  - This bit is set when the result is zero 
3: Summary overflow (SO) - This is a copy of the final state of XER[SO] at completion of the instruction 

(source)

관련 문제