37 lines
		
	
	
		
			475 B
		
	
	
	
		
			NASM
		
	
	
	
	
	
		
		
			
		
	
	
			37 lines
		
	
	
		
			475 B
		
	
	
	
		
			NASM
		
	
	
	
	
	
| 
								 | 
							
								; x86 timer in NASM
							 | 
						||
| 
								 | 
							
								;
							 | 
						||
| 
								 | 
							
								; Tom St Denis, tomstdenis@iahu.ca
							 | 
						||
| 
								 | 
							
								[bits 32]
							 | 
						||
| 
								 | 
							
								[section .data]
							 | 
						||
| 
								 | 
							
								time dd 0, 0
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								[section .text]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								%ifdef USE_ELF
							 | 
						||
| 
								 | 
							
								[global t_start]
							 | 
						||
| 
								 | 
							
								t_start:
							 | 
						||
| 
								 | 
							
								%else
							 | 
						||
| 
								 | 
							
								[global _t_start]
							 | 
						||
| 
								 | 
							
								_t_start:
							 | 
						||
| 
								 | 
							
								%endif
							 | 
						||
| 
								 | 
							
								   push edx
							 | 
						||
| 
								 | 
							
								   push eax
							 | 
						||
| 
								 | 
							
								   rdtsc
							 | 
						||
| 
								 | 
							
								   mov [time+0],edx
							 | 
						||
| 
								 | 
							
								   mov [time+4],eax
							 | 
						||
| 
								 | 
							
								   pop eax
							 | 
						||
| 
								 | 
							
								   pop edx
							 | 
						||
| 
								 | 
							
								   ret
							 | 
						||
| 
								 | 
							
								   
							 | 
						||
| 
								 | 
							
								%ifdef USE_ELF
							 | 
						||
| 
								 | 
							
								[global t_read]
							 | 
						||
| 
								 | 
							
								t_read:
							 | 
						||
| 
								 | 
							
								%else
							 | 
						||
| 
								 | 
							
								[global _t_read]
							 | 
						||
| 
								 | 
							
								_t_read:
							 | 
						||
| 
								 | 
							
								%endif
							 | 
						||
| 
								 | 
							
								   rdtsc
							 | 
						||
| 
								 | 
							
								   sub eax,[time+4]
							 | 
						||
| 
								 | 
							
								   sbb edx,[time+0]
							 | 
						||
| 
								 | 
							
								   ret
							 | 
						||
| 
								 | 
							
								   
							 |