cmove
을 원하는 방식대로 작동시키지 못했습니다. 나는 코드의이 비트가 :cmov에 대한 피연산자 유형 불일치
cmove $1, %eax
을 그리고 편집에서이 오류가 발생합니다 : mov
완벽하게 작동, 말과 cmove
교체, 그러나
Error: operand type mismatch for `cmove'
및
mov $1, %ecx
cmove %ecx, %eax
작품 너무. cmovel
도 사용하려고했지만 작동하지 않습니다. 내가 놓친 게 있니?
'cmov' 명령어를 사용하는 것은 필연적으로 스크래치 레지스터를 clobber해야한다는 것을 의미합니다. 두 번째 발췌 문장은'ecx'를 스크래치 레지스터로 사용하여이 작업을 수행하는 방법입니다. 'mov' 명령어가 플래그에 영향을 미치지 않기 때문에이 함수가 얼마나 잘 작동하는지주의하십시오. 그래서 당신은 언제든지 (플래그를 설정하는) 테스트와 조건부 - 이동 사이에 삽입 할 수 있습니다. –