====== Collection of fragments for development ====== Within this article we want to provide further information and snippets about our development on HyperbolaBSD. ===== Assembler instructions ===== {| border="1" style="border-collapse:collapse; text-align: center; color:#262627; background-color:#f8f9fa;" width="100%" ! style="background-color:#eaecf0" colspan="1"| ! style="background-color:#eaecf0" colspan="1"| C / C++ ! style="background-color:#eaecf0" colspan="1"| amd64/x86_64 at&t ! style="background-color:#eaecf0" colspan="1"| 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; |- ! colspan="4"| |- ! 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; |- ! colspan="4"| |- ! 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; |- ! colspan="4"| |- ! and ! val &= 1; ! andl $1, %r11; ! and r11, 1; |- ! not ! val = ~val; ! notl %r11; ! not r11; |- ! or ! val |= 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; |- ! colspan="4"| |- ! 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; |- ! colspan="4"| |- ! 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; |- |}