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