2014-06-22 3 views
0

다음 코드로드 동일한 데이터를 D17뿐만 D18, D19로서 :ARM 네온 VLD1 명령로드 레지스터 회

vld1.16   {d16, d17, d18, d19}, [R1, :128]! 

제가 너무

vld1.16   d16, [R1, :64]! 

처럼 별도 하중을 분할하려고 또한 d16 및 d17에 데이터를 두 번로드했습니다.

이것은 Xcode 5.1.1에서 대상은 iPad 3 (ARMv7)입니다.

IDE에서 결과를 믿지 않으면 lldb에서 결과를 확인했습니다.

lldb에 코드를 디스 어셈블리하면 예상 코드가 표시됩니다.

+0

', : 128' 부분을 제거해보십시오. – ooga

+0

좋지 않습니다. 이미 정렬 지정자를 제거하려고 시도했습니다. – Possum

답변

3

이것은 Xcode의 버그 인 것 같습니다. 로드가 실제로 제대로 작동하고 있습니다. 내가 값을 (D16과 D17 별칭 됨) Q8 레지스터를 사용하여 해당 데이터를 볼 경우

(lldb) register read d16 --format int16_t[] 
    d16 = {1210 -18 14 -9} 
(lldb) register read d17 --format int16_t[] 
    d17 = {1210 -18 14 -9} 

: 나는 D 레지스터를 사용하여 내용을 덤프 경우

, 나는 중복 값을 얻을 ,

(lldb) register read q8 --format int16_t[] 
    q8 = {1210 -18 14 -9 23 -9 -14 -18} 

그래서 수정해야 LLDB 버그처럼 보인다는 D 레지스터에 대해 알려줍니다 무엇을 신뢰하지 않는다 : 잘 봐!

+0

xcode IDE의 또 다른 버그는 Q 레지스터를 16 진수 바이트로만 볼 수있게 해줍니다. 따라서 lldb 명령은 Q 레지스터를 쉽게 해석 할 수있는 방법입니다. – Possum

관련 문제