cmove
を私が望むように動作させることができないようです。私はこのコードのビットがありますcmovのオペランドタイプの不一致
cmove $1, %eax
をそして私は、コンパイルでこのエラーを取得する:
Error: operand type mismatch for `cmove'
しかし、完璧に動作mov
、と言う、とcmove
を交換し、
mov $1, %ecx
cmove %ecx, %eax
作品あまりにも。私もcmovel
を使ってみましたが、うまくいきません。何か不足していますか?
は、必然的にあなたがスクラッチ・レジスタを壊しする必要がありますことを意味します。 2番目のスニペットは、ecxをスクラッチレジスタとして使用して、これを行う方法です。 'mov'命令がフラグに影響を与えたことがないので、これはどのように動作するかよく注意してください、あなたは常に(フラグを設定する)テストと条件付き移動の間に、それを挿入することができます。 –