Windows 용 ARM 크로스 어셈블러에서 예상치 못한 경고가 발생하고 있습니다. 경고를 일으키는 지시했다 :GNU ARM 어셈블러에서 예기치 않은 경고가 발생했습니다.
stmdb sp!,{r0-r14}^
및
ldmia sp!,{r0-r14}^
을 경고는 다음과 같습니다
은 경고 : 기본 레지스터의 되돌림은 예측할 수
내가 할 수있는 종류의 '^'수정자가 프로세서에 th를 저장하라고 알려주는 것처럼 이것을 이해하십시오. e 사용자 모드의 레지스터 복사본을 사용하면 명령이 실행될 때 프로세서가 어떤 모드에 있는지 알 수 없으며 명령을 알릴 방법이없는 것처럼 보입니다. 내가 명시 적으로 어떤 SP 레지스터를 저장하고 있지 않다는 사실에도 불구하고
ldmia sp!,{r0-r9,sl,fp,ip,lr}^
:
stmdb sp!,{r0-r9,sl,fp,ip,lr}^
과 : 나는에 대해 동일한 경고가 조금 더 걱정이었다.
내 관심사는 약 15 년 전에 어셈블러 코딩을 많이 했었지만 ARM 코드는 나에게 새로운 것이고 나는 오해를 불러 일으킬 수도 있다는 것이다. 또한 경고를 무시해도 안전하지 않은 경우 경고를 무시할 수 있습니까?
아, 제가 건축 정보 레퍼런스 매뉴얼에서 그 부분을 놓쳤습니다. 비록 제가 ARM1176JZF-S 테크니컬 레퍼런스 매뉴얼을 제 정보에 많이 사용하고 있다는 것을 인정해야만합니다. Google을 사용하여 발견 한 경고의 모든 설명 (많지 않음!)은로드/저장중인 레지스터에 대한 쓰기 저장을 수행 중이므로 경고가 발생했다고 말합니다. 나는 writeback이 기본 레지스터의 갱신을 참조하는 것을 이해합니다. – williamssimonp