Within this article we want to provide further information and snippets about our development on HyperbolaBSD.
C / C++ | amd64/x86_64 at&t | amd64/x86_64 intel | |
---|---|---|---|
dec | val = –val; | decl $r11; | dec r11; |
inc | val = ++val; | incl $r11; | inc r11; |
mov | val = 1; | movl $1, %r11; | mov r11, 1; |
add | val += 1; | addl $1, %r11; | add r11, 1; |
neg | val = -val; | negl %r11; | neg r11; |
sub | val -= 1; | subl $1, %r11; | sub r11, 1; |
div | uint acc = 4; acc /= val; |
movl $4, %rax; divl %r11; |
mov rax, 4; div r11; |
idiv | int acc = 4; acc /= val; |
movl $4, %rax; idivl %r11; |
mov rax, 4; idiv r11; |
mul | uint acc = 4; acc *= val; |
movl $4, %rax; mull %r11; |
mov rax, 4; mul r11; |
imul | int acc = 4; acc *= val; |
movl $4, %rax; imull %r11; |
mov rax, 4; imul r11; |
and | val &= 1; | andl $1, %r11; | and r11, 1; |
not | val = ~val; | notl %r11; | not r11; |
or | = 1; | orl $1, %r11; | or r11, 1; |
xor | val ^= 1; | xorl $1, %r11; | xor r11, 1; |
test | val & 1 | testl $1, %r11; | test r11, 1; |
call | label(); | call label; | call label; |
cmp | val ⇔ 1 | cmpl $1, %r11; | cmp r11, 1; |
jmp | goto label; | jmp label; | jmp label; |
ret | return; | ret; | ret; |
je | if (val == res) goto label; |
cmpl $r11, %r12; je label; |
cmp $r12, %r11; je label; |
jg | if (val > res) goto label; |
cmpl $r11, %r12; jg label; |
cmp $r12, %r11; jg label; |
jge | if (val >= res) goto label; |
cmpl $r11, %r12; jge label; |
cmp $r12, %r11; jge label; |
jl | if (val < res) goto label; |
cmpl $r11, %r12; jl label; |
cmp $r12, %r11; jl label; |
jle | if (val ⇐ res) goto label; |
cmpl $r11, %r12; jle label; |
cmp $r12, %r11; jle label; |
jne | if (val != res) goto label; |
cmpl $r11, %r12; jne label; |
cmpl $r12, %r11; jne label; |
jz | if (val == res) goto label; |
cmpl $r11, %r12; jz label; |
cmpl $r12, %r11; jz label; |