单个x86指令可以在"0"和"1"之间切换布尔值吗?
我想到了以下方法,但都导致了两个指令与-cc标志的gcc.
status =! status;
status = 1 - status;
status = status == 0 ? 1: 0;
int flip[2] = {1, 0};
status = flip[status];
Run Code Online (Sandbox Code Playgroud)
有更快的方法吗?
这就是我尝试过的:https://godbolt.org/g/A3qNUw
我需要的是一个切换输入和返回的函数,以编译为一条指令的方式编写.与此功能类似的东西:
int addOne(int n) { return n+1; }
Run Code Online (Sandbox Code Playgroud)
lea eax, [rdi+1] # return n+1 in a single instruction
ret
Run Code Online (Sandbox Code Playgroud)