2014-12-03 1 views
1

ARM 어셈블러 (특히 ARM7 리틀 엔디안)를 사용하여 일부 테스트를 수행하고 있으며 산술 명령어를 사용하여 간접적으로 설정하지 않으면 플래그/CPSR 레지스터를 설정하는 방법을 찾을 수 없습니다 .ARM 어셈블러에서 CPSR 플래그 직접 설정

대신 CPSR 플래그에 직접 쓸 수있는 방법이 있습니까?

+0

왜 CPSR을 변경해야합니까? 아마도 레지스터를 직접 조작하지 않고 실제로 필요한 것을 성취 할 수있는 방법이있을 것입니다. –

+0

[Google ** 설정 팀 CPSR **] (https://www.google.com/#q=setting+arm+cpsr) 및 [두 번째 히트는 heyrick입니다.] (http://www.heyrick.co.uk/armwiki/The_Status_register)에 정보가 들어 있습니다. –

+0

질문에 대한 답변이있는 [arm tag] (http://stackoverflow.com/search?q= [arm] + cpsr + is % 3Aquestion)에는 [은행 계좌 등록] ] (http://stackoverflow.com/questions/2784978/explicitly-accessing-banked-registers-on-arm). –

답변

1

MSR 및 MRS 지침을 사용해 보셨습니까?

0

명령은 PSR에 씁니다. ARM7에서는 특권 모드에서만 사용할 수 있습니다 (특정 CPSR 필드에 대한 비 권한 액세스에 대한 APSR 개념은 이후 아키텍처에서 제공됨).

MRS R0, CPSR ; Read the CPSR 
BIC R0, R0, #0xf0000000 ; Clear the N, Z, C and V bits 
MSR CPSR_f, R0 ; update the flag bits in the CPSR 

참고 레지스터 형태 용으로 예약 된 비트를 유지하기 위해, 판독 - 수정 - 기입 동작 :

ARMv4T 이상 메뉴얼

는 플래그를 클리어의 구체 예를 포함한다. 특정 플래그 설정의 경우 예약 된 비트에 0을 쓰면 직접 값을 CPSR_f에 직접 쓸 수 있습니다.

관련 문제