NEON 확장 레지스터는 16 개의 쿼드 워드 또는 32 개의 더블 워드로 볼 수 있습니다. 대부분의 프로그래밍에서 사용되는 특정 레지스터는 고정되어 있습니다. 예를 들어,NEON에서 레지스터 이름에 변수를 사용 하시겠습니까?
vmov.i8 d0, 0xff
vmov.i8 d1, 0xee
vmov.i8 d2, 0xdd
내 문제는 필요한 더블 워드 레지스터의 수는 함수 호출의 인수에 따라 다릅니다. 인수가 2 인 경우 인수가 4 인 경우 예를 들어, 내가
vmov.i8 d0, 0xff
vmov.i8 d1, 0xee
을 할 필요가, 내가 그의 이름을 기반으로하는 레지스터를 선택
vmov.i8 d0, 0xff
vmov.i8 d1, 0xee
vmov.i8 d2, 0xdd
vmov.i8 d3, 0xcc
을 할 수 어쨌든 있나요 필요 변하기 쉬운? 이 라인을 따라, 즉 뭔가 (다음은 유효한 ARM 어셈블리 코드가 아닙니다) :
mov r0, #1
vmov.i8 d{r0}, 0xff
여기에서 수행하려는 작업에 대한 자세한 내용을 제공 할 수 있습니까? 일반적으로 NEON의 조건은 비트 논리로 변환되므로 비교를 수행하고 AND (예 :)를 수행하여 다른 값을 기반으로 레지스터의 일부를 마스크 처리 할 수 있습니다. –
드문 경우지만 ARM 명령어는 정적으로 대상 지정되며 피연산자를 조건부로 변환 할 수있는 방법은 없습니다. –
바이트 행렬 곱셈을 시도하고 있습니다. 왼쪽 행렬은 8 by 8 바이트이고 오른쪽은 8 by n이고 n은 1에서 7까지의 변수가 될 것입니다. 가능한 모든 n에 대해 일반적인 코드를 작성할 수 있는지보고 싶습니다. n은 특정 값을 구체적으로 처리하는 레이블로 점프합니다). 서로 다른 n이 올바른 수의 레지스터를 저장하는 데 필요한 레지스터 수가 다르므로 매개 변수 n을 기반으로 사용할 레지스터를 결정할 수 있는지 확인하고 싶습니다. – windchime