mirror of
				https://github.com/sharkdp/bat.git
				synced 2025-10-30 22:54:07 +00:00 
			
		
		
		
	test: x86-64 Assembly NASM syntax test
This commit is contained in:
		
				
					committed by
					
						 David Peter
						David Peter
					
				
			
			
				
	
			
			
			
						parent
						
							8832a96e82
						
					
				
				
					commit
					5fe98689d4
				
			
							
								
								
									
										86
									
								
								tests/syntax-tests/source/Assembly (x86_64)/test.nasm
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										86
									
								
								tests/syntax-tests/source/Assembly (x86_64)/test.nasm
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,86 @@ | ||||
| global enlight | ||||
|  | ||||
| section .data | ||||
|   red dq 0 ; some comment | ||||
|   green dq 0 | ||||
|   blue dq 0 | ||||
|   data dq 0 | ||||
|   N dd 0 | ||||
|   M dd 0 | ||||
|   change dd 0 | ||||
|   delta db 0 | ||||
|  | ||||
| section .text | ||||
| enlight: | ||||
|   call assign_arguments | ||||
|   call set_data | ||||
|   call make_deltas | ||||
|   ret | ||||
|  | ||||
| assign_arguments: | ||||
|   mov qword[red], rdi | ||||
|   mov qword[green], rsi | ||||
|   mov qword[blue], rdx | ||||
|   mov dword[N], ecx | ||||
|   mov dword[M], r8d | ||||
|   mov dword[change], r9d | ||||
|   mov al, byte[rsp + 16] | ||||
|   mov byte[delta], al | ||||
|   ret | ||||
|  | ||||
| set_data: | ||||
|   mov eax, dword[change] | ||||
|   cmp eax, 1 | ||||
|   jne not_1 | ||||
|   mov rax, qword[red] | ||||
|   mov qword[data], rax | ||||
|   ret | ||||
| not_1: | ||||
|   cmp eax, 2 | ||||
|   jne not_2 | ||||
|   mov rax, qword[green] | ||||
|   mov qword[data], rax | ||||
|   ret | ||||
| not_2: | ||||
|   mov rax, qword[blue] | ||||
|   mov qword[data], rax | ||||
|   ret | ||||
|  | ||||
|  | ||||
| make_deltas: | ||||
|   mov ecx, dword[N] | ||||
|   mov eax, dword[M] | ||||
|   imul ecx, eax | ||||
| loop_start: | ||||
|   call make_delta | ||||
|   loop loop_start | ||||
|   ret | ||||
|  | ||||
| make_delta: | ||||
|   mov rax, qword[data] | ||||
|   add rax, rcx | ||||
|   dec rax | ||||
|   mov dl, byte[delta] | ||||
|   cmp dl, 0 | ||||
|   jl substracting | ||||
| adding: | ||||
|   add dl, byte[rax] | ||||
|   jc adding_overflow | ||||
|   mov byte[rax], dl | ||||
|   ret | ||||
| adding_overflow: | ||||
|   mov byte[rax], 255  | ||||
|   ret | ||||
| substracting: | ||||
|   mov r9b, dl | ||||
|   mov dl, 0 | ||||
|   sub dl, r9b | ||||
|   mov r8b, byte[rax] | ||||
|   sub r8b, dl | ||||
|   jc substracting_overflow | ||||
|   mov byte[rax], r8b | ||||
|   ret | ||||
| ; another comment | ||||
| substracting_overflow: | ||||
|   mov byte[rax], 0 | ||||
|   ret | ||||
		Reference in New Issue
	
	Block a user