Collection of fragments for development

Within this article we want to provide further information and snippets about our development on HyperbolaBSD.

Assembler instructions

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;