Tags: ARM MIPS ARM64 X64 ASM L1 .
This code snippet is short, but tricky. What does it do? It's used heavily in low-level programming and is well-known to many low-level programmers. There are several ways to calculate it, and this is the one of them.
Optimizing GCC 4.8.2:
f: lea eax, [rdi-1+rsi] neg esi and eax, esi ret
Optimizing GCC 4.9.3 for ARM64:
f: add w0, w0, w1 neg w1, w1 sub w0, w0, #1 and w0, w0, w1 ret
(ARM) Optimizing Keil 5.05 (Thumb mode):
f PROC ADDS r0,r0,r1 SUBS r0,r0,#1 SUBS r1,r1,#1 BICS r0,r0,r1 BX lr ENDP
Optimizing Keil 5.05 for ARM mode generates nearly the same code, so it's omitted here.
Optimizing GCC 4.4.5 for MIPS:
f: addiu $4,$4,-1 addu $4,$4,$5 subu $2,$0,$5 j $31 and $2,$2,$4
More challenges: challenges.re; about solutions: challenges.re/#Solutions.