FJCVTZS 는 “Floating-point Javascript Convert to Signed fixed-point, rounding into zero”입니다. Arm v8.3-A 칩 이상에서 지원됩니다. 이상합니다. JavaScript가 베어 메탈에 너무 가깝다고 기대하지 않기 때문입니다.
명령이 수행하는 작업에 대한 설명은 찾을 수 있지만 왜 존재하는지는 알 수 없습니다. 이 스레드 는 “JS에 정수 유형이 없음을 의미하기 때문에 단일 명령어로 존재합니다. 이는 특정 유스 케이스가 좋은 알고리즘 이유없이이 작업을 외설적으로 자주 필요로하기 때문입니다.”라고 말합니다. 그럴듯하지만 더 자세한 이해를 원합니다.
답변
JS는 숫자에 배정 밀도를 사용하기 때문이지만 비트로 연산을 수행하려는 경우 작업은 사소하지 않으므로 JS double을 정수로 변환하는 특정 명령을 사용하면 작업이 더 쉬워집니다.
이 ARM 링크는이를 매우 잘 설명합니다. https://community.arm.com/processors/b/blog/posts/armv8-a-architecture-2016-additions
fuz의 의견에 대한 자세한 정보를 추가하기 위해, 차이점 FCVTZS
및 FJCVTZS
(둘 다 int와 부동 소수점 심자) 오버 플로우의 경우, 점이다 FJCVTZS
값이 대신 넘치는 0x80000000에있을 것입니다. 또한 FJCVTZS
변환이 어떻게 이루어 졌는지 (즉, 정확하지 않음) 표시하기 위해 예외를 생성 할 수 있습니다.
FJCVTZS
: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0801g/hko1477562192868.html
FCVTZS
: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0802a/FCVTZS_float_int.html