나는 2 시간의 인터넷 검색을 보냈지 만 아무 소용이 없었습니다. - 초보자를위한 가이드가 많지 않았고, 지금 당장 취하고있는 과정은 어떤 것을 설명하는 데 아주 능숙하지 않습니다.
어쨌든; 나는 SSE와 함께 일하려고 애 썼고 명령어를 사용하여 두 개의 double
을 비교해 보았습니다. 나는 정수가 아닌 상수는 방법 하드 코드를 이해하는 데 많은 시간을 보냈다 (의는 example
를 호출하자, 그것은
example:
.long 3794832442
.long 1044740494
로 선언); 하지만 그 작업을 마친 후에는 "피연산자 유형 불일치"가 작동하지 않습니다. 나는 C-to-assembly 변환기로 돌아 왔고 comisd $example, %xmm0
대신 comisd example(%rip), %xmm0
을 사용했는데 작동하는 것으로 나타났습니다. 이제 이해가 안됩니다. 어떻게 작동하며 어떻게 다릅니 까?
'$'는 즉각적으로 작동하지 않습니다. comisd example, % xmm0'이 효과가있었습니다. – Jester
이론적으로'example equ ((1044740494 << 32) +3794832442)'는'$ example'에 대해서는 올바른 것이지만'imm64' 인수를 취하는'comisd' 명령은 없으며'xmm/m64' 만 유효합니다. 정의가 정확하다 (메모리에 저장된 값과 심볼'example'은 주소를 가리키는 레이블이다). 명령어의 사용법을 고쳐야한다. – Ped7g