diff --git a/asm/idiv.c b/asm/idiv.c deleted file mode 100644 index 6b04088..0000000 --- a/asm/idiv.c +++ /dev/null @@ -1,20 +0,0 @@ -#include - -int main() { - short a, b, c, d; - scanf("%hd %hd", &a, &b); - asm - ( - "mov %1,%%ax\n" - "mov %2,%%bx\n" - "cwd\n" - "idiv %%bx\n" - "mov %%ax, %%dx\n" - "mov %%dx, %0\n" - : "=r" (c) - : "r" (a), "r" (b) - ); - printf("%hd\n", c); -} - - diff --git a/asm/solutions.md b/asm/solutions.md deleted file mode 100644 index 2b2bede..0000000 --- a/asm/solutions.md +++ /dev/null @@ -1,153 +0,0 @@ -# zero - -``` -xor %eax, %eax -``` - -# one -``` -xor %eax, %eax -inc %eax -``` - -# next -``` -inc %ax -``` - -# prev -``` -dec %ax -``` - -# sum -``` -mov %ax, %dx -add %bx, %dx -``` - -# sub -``` -mov %rax, %rdx -sub %rbx, %rdx -``` - -# imul -``` -imul %bl -mov %ax, %dx -``` - -# idiv -``` -cwd -idiv %bx -mov %ax, %dx -``` - -# lea -``` -lea (%rax, %rbx, 8), %rdx -``` - -# lea1 -``` -lea (%rax, %rax, 4), %rdx -``` - -# lea32 -``` -lea (%eax, %ebx, 8), %edx -``` - -# egalite -``` -cmp %ax, %bx -jne nya -mov $1, %dx -jmp nya_ -nya: -mov $0, %dx -nya_: -``` - -# factorial -``` -xor %edx, %edx -inc %edx -cmp $0, %al -je end -mov %al, %cl -mov %ecx, %eax -loop: -cmp $1, %ecx -mov %eax, %edx -jle end -dec %ecx -mul %ecx -jmp loop -end: -``` - -# factorial64 -``` -xor %rdx, %rdx -inc %rdx -cmp $0, %al -je end -mov %al, %cl -mov %rcx, %rax -loop: -cmp $1, %rcx -mov %rax, %rdx -jle end -dec %rcx -mul %rcx -jmp loop -end: -``` -# antifa -``` -xor %ecx, %ecx -inc %ecx -loop: -cmp $1, %eax -je end -inc %ecx -cdq -div %ecx -jmp loop -end: -mov %ecx, %ebx -``` - -# antifa64 -``` -xor %rcx, %rcx -inc %rcx -loop: -cmp $1, %rax -je end -inc %rcx -cqo -div %rcx -jmp loop -end: -mov %rcx, %rbx -``` - -# vector -``` -xor %rbx, %rbx -cmp $0, %rcx -je end -dec %rcx -loop: -lea (%rax, %rcx, 8), %rdx -add (%rdx), %rbx -dec %rcx -cmp $-1, %rcx -je end -jmp loop -end: -``` diff --git a/asm/vector.c b/asm/vector.c deleted file mode 100644 index ca67fc1..0000000 --- a/asm/vector.c +++ /dev/null @@ -1,40 +0,0 @@ -#include -#include - -int main() { - //uint64_t c = 5; - uint64_t b, c = 5; - int64_t *a; - int64_t array[] = {1, 2, 3, 4, 5}; - a = array; - //printf("pointer: %p\n", a); - asm ( - "mov %1, %%rax\n" - "mov %2, %%rcx\n" - - "xor %%rbx, %%rbx\n" - "cmp $0, %%rcx\n" - "je end\n" - - "dec %%rcx\n" - - "loop:\n" - - "lea (%%rax, %%rcx, 8), %%rdx\n" - "add (%%rdx), %%rbx\n" - "dec %%rcx\n" - - "cmp $-1, %%rcx\n" - "je end\n" - "jmp loop\n" - - "end:\n" - - - "mov %%rbx, %0\n" - : "=r" (b) - : "r" (a), "r" (c) - ); - printf("%lld\n", b); - -}