XMVECTOR를 인수로 보낼 때 처음 3개는 f, 4번째건 g, 5,6번째는 h, 나머지는 c쓰라는데
왜 굳이 이런 방식을 쓰는 것임??? 걍 & 붙였다가 뗐다가 하는 걸로 충분하지 않음???
댓글 4
xMath 함수들 보면 함수콜이 vectorcall임 이게 x64함수콜보다 매개변수에 래지스터를 더 많이씀. Vector가 보면 sse레지스터 하나에 딱 들어가는 크기인데 최적화를 더 잘하려고+버그 없으라고 붙이는 것같음. 나 예정에 벡터콜 중첩해서 호출시키니까 레지스터 꼬여서인지 값이 이상해지더라
C++(rustisbetterthancpp)2022-04-30 12:31
답글
vetor 하나가 16바이트라 sse에 딱 하나 들어간다는 건 알겠는데, 왜 저걸붙이면 버그가 없는지 이해가 안 가요... typedef 보니까 참조자인지 아닌지 차이뿐이던데 참조자가 아니면 레지스터에 가고 참조자면 스택에 가는 건가요?
xMath 함수들 보면 함수콜이 vectorcall임 이게 x64함수콜보다 매개변수에 래지스터를 더 많이씀. Vector가 보면 sse레지스터 하나에 딱 들어가는 크기인데 최적화를 더 잘하려고+버그 없으라고 붙이는 것같음. 나 예정에 벡터콜 중첩해서 호출시키니까 레지스터 꼬여서인지 값이 이상해지더라
vetor 하나가 16바이트라 sse에 딱 하나 들어간다는 건 알겠는데, 왜 저걸붙이면 버그가 없는지 이해가 안 가요... typedef 보니까 참조자인지 아닌지 차이뿐이던데 참조자가 아니면 레지스터에 가고 참조자면 스택에 가는 건가요?
여기에 설명 잘 되있음.. 아니면 그냥 SimpleMath 가져다 쓰는 것도 나쁘지 않을 것 같에요.. 절대 DirectXMath 라이브러리 공부하기 귀찮아서 그런거아님!
https://github.com/Microsoft/DirectXTK/wiki/SimpleMath
파파고 번역으로 봐서 그런지는 모르겠는데 FXM, GXM, HXM, CXM 이놈들 차이가 뭔지 모르겠음