This is an old revision of the document!


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;
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;