вот реализация на go
https://play.golang.org/p/zTe6pRwx0Y (на основе "это не работает")
package main
import "fmt"
func abs(x int) int {
m := x >> 31
return (x + m) ^ m
}
func main() {
fmt.Println(abs(-65580))
}
это компилируется в:
01 MOVQ $-65580,AX
02 MOVQ AX,DX
03 SARQ $31,AX
04 ADDQ AX,DX
05 XORQ AX,DX
тут можно посмотреть на 2 канонических ассемблерных варианта для x86:
www.strchr.com/optimized_abs_function
то есть отличие только в замене 02-03 на одну инструкция
cdq, если хочется добится 3х инструкций - можете вручную сделать реализацию на ассемблере смотрите тот же пакет math например.