Open sbkim28 opened 6 months ago
설명이 다소 부족했던 것 같습니다. 정확히는 scalar register의 경우 big endian으로 저장되지만 vector register의 경우 각 원소(?)의 순서는 little endian으로 저장되는 것이 맞습니다. 즉 64비트 scalar register에서 16비트만 떼온다고 하면 하위 (오른쪽) 16비트를 떼오는 게 맞지만, vector register에서 0번째 32비트 숫자 하나를 떼온다고 하면 상위(왼쪽) 32비트를 떼오게 됩니다. 이때도 떼온 32비트를 숫자로 해석할(?) 때는 다시 big endian으로 해석합니다.
안녕하세요, 프로젝트 스펙과 관련하여 궁금한 점이 있어서 질문을 드리고자 합니다.
다음은 제가 임의로 작성한 LLVM IR 코드입니다.
프로젝트 assembly spec에 따르면 register는 big-endian이므로, 저는 해당 코드가
0 0 0 1
을 출력할 것으로 기대하였습니다.그러나 실제 이를 실행해보면
0 0 1 0
이 출력됩니다. vector register의 각 element가 little endian처럼 동작하는 것 같은데, 제가 assembly spec을 잘못 이해한 것인지 궁금하여 여쭙습니다.감사합니다.