Compare commits
	
		
			No commits in common. "57c54c1dd3df2ca9ddd8eaa72d1a252ce005b414" and "6407f8f4780e667f0a20e467d60973594ffa20e0" have entirely different histories.
		
	
	
		
			57c54c1dd3
			...
			6407f8f478
		
	
		
					 3 changed files with 0 additions and 213 deletions
				
			
		
							
								
								
									
										20
									
								
								asm/idiv.c
									
										
									
									
									
								
							
							
						
						
									
										20
									
								
								asm/idiv.c
									
										
									
									
									
								
							|  | @ -1,20 +0,0 @@ | ||||||
| #include <stdio.h> |  | ||||||
| 
 |  | ||||||
| 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); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
							
								
								
									
										153
									
								
								asm/solutions.md
									
										
									
									
									
								
							
							
						
						
									
										153
									
								
								asm/solutions.md
									
										
									
									
									
								
							|  | @ -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: |  | ||||||
| ``` |  | ||||||
							
								
								
									
										40
									
								
								asm/vector.c
									
										
									
									
									
								
							
							
						
						
									
										40
									
								
								asm/vector.c
									
										
									
									
									
								
							|  | @ -1,40 +0,0 @@ | ||||||
| #include <stdio.h> |  | ||||||
| #include <stdint.h> |  | ||||||
| 
 |  | ||||||
| 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); |  | ||||||
| 
 |  | ||||||
| } |  | ||||||
		Reference in a new issue