⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 eagle.asm

📁 著名ARC模拟器源码,包括多个平台
💻 ASM
📖 第 1 页 / 共 2 页
字号:
.L0	push ecx	xchg eax,ecx	movq mm1,[ebp]	movq mm0,[esi]	add ebp,8	add esi,8	; added for mmx16	push ebp	push ecx	mov ebp, ecx	mov word cx, [_dlx]	; end of added	movd eax, mm0	movd ebx, mm1;	cmp dhx, bx	cmp dx, bx	jne .L6001.L1001	cmp bx, ax	jne .L3001.L2001	mov [edi],ax;	mov [ecx],dhx	mov [ebp],dx	mov [edi+2],ax	mov [ebp+2],bx	jmp .L11.L3001;	cmp dhx, dlx        cmp dx, cx	jne .L5001.L4001;	mov [edi],dx  ; mmmh;	mov [ecx],dx  ; mmmh;	mov [edi],dl;	mov [ecx],dl;	mov [edi+1],dh;	mov [ecx+1],dh      mov [edi],cx      mov [ebp],cx	mov [edi+2],dx	mov [ebp+2],dx	jmp .L11.L5001      mov [edi],cx;	mov [ecx],dhx	mov [ebp],dx	mov [edi+2],ax	mov [ebp+2],bx	jmp .L11.L6001;	cmp dlx, ax      cmp cx, ax	jne .L12001.L7001;	cmp dlx, dhx      cmp cx, dx	jne .L9001.L8001;	mov [edi],dx  ; mmmh;	mov [ecx],dx  ; mmmh;	mov [edi],dl;	mov [ecx],dl;	mov [edi+1],dh;	mov [ecx+1],dh;	mov [edi],dlx;	mov [ecx],dlx      mov [edi],cx      mov [ebp],cx;	mov [edi+2],dhx;	mov [ecx+2],dhx	mov [edi+2],dx	mov [ebp+2],dx	jmp .L11.L9001	cmp ax,bx	jne .L11001.L10001;	mov [edi],dlx      mov [edi],cx	mov [ebp],bx	mov [edi+2],ax	mov [ebp+2],bx	jmp .L11.L11001.L12001;	mov [edi],dlx;	mov [ecx],dhx      mov [edi],cx	mov [ebp],dx	mov [edi+2],ax	mov [ebp+2],bx.L11	movq mm4, mm1	movq mm2, mm0      pcmpeqd mm7, mm7		; set mm7 to FFFFFFFFFFFFFFFF	;pcmpeqb mm4, mm0		; byte compare equal mm0 with mm1 and store in mm4	pcmpeqw mm4, mm0		; word compare equal mm0 with mm1 and store in mm4	;psllq mm2, 8		; shift mm0 left one byte and store in mm2	psllq mm2, 16		; shift mm0 left one word and store in mm2	movq mm3, mm0	movq mm5, mm4		; store byte compare mm0 with mm1 in mm5	;pcmpeqb mm2, mm0		; byte compare mm0 with mm2 and store in mm2	pcmpeqw mm2, mm0		; word compare mm0 with mm2 and store in mm2	;psrlq mm3, 8		; shift mm0 right one byte and store in mm3	psrlq mm3, 16		; shift mm0 right one word and store in mm3	pand mm2, mm5      movq mm6, mm1		; and mm5 with mm1	movq mm5, mm2		; not mm2 and store in mm5      pxor mm5, mm7;      psllq mm6, 8      psllq mm6, 16	pand mm2, mm0		; and mm0 with mm2      pand mm5, mm6	por mm2, mm5    		; mm2 now contains right-bottom of quad	;pcmpeqb mm3, mm0		; byte compare mm3 with mm0 and store in mm3	pcmpeqw mm3, mm0		; word compare mm3 with mm0 and store in mm3	movq mm5, mm4		; word compare of mm0 with mm1 store in mm5	pand mm3, mm4	movq mm5, mm3		; not mm3 store in mm5	movq mm6, mm1      pxor mm5, mm7	pand mm3, mm0      ;psrlq mm6, 8      psrlq mm6, 16	pand mm5, mm6      ;psrlq mm2, 8      psrlq mm2, 16	por mm3, mm5    ; now write the 16 bytes of the bottom line      movq mm4, mm2	movq mm6, mm2;      punpcklbw mm4, mm3;	punpckhbw mm6, mm3        punpcklwd mm4, mm3        punpckhwd mm6, mm3;	movq [ecx+2],mm4	movq [ebp+4],mm4;	movq [ecx+10],mm6	movq [ebp+12],mm6; start with top line	movq mm2, mm1	movq mm3, mm1	movq mm4, mm0      pcmpeqd mm7, mm7		; set mm7 to FFFFFFFFFFFFFFFF	;pcmpeqb mm4, mm1		; byte compare equal mm0 with mm1 and store in mm4	pcmpeqw mm4, mm1		; word compare equal mm0 with mm1 and store in mm4	;psllq mm2, 8		; shift mm0 left one byte and store in mm2	psllq mm2, 16		; shift mm0 left one word and store in mm2	;psrlq mm3, 8		; shift mm0 right one byte and store in mm3	psrlq mm3, 16		; shift mm0 right one word and store in mm3	movq mm5, mm4		; store byte compare mm0 with mm1 in mm5	;pcmpeqb mm2, mm1		; byte compare mm0 with mm2 and store in mm2	pcmpeqw mm2, mm1		; word compare mm0 with mm2 and store in mm2	pand mm2, mm5	movq mm5, mm2		; not mm2 and store in mm5      pxor mm5, mm7	pand mm2, mm1		; and mm0 with mm2      movq mm6, mm0		; and mm5 with mm1      ;psllq mm6, 8      psllq mm6, 16      pand mm5, mm6	por mm2, mm5    		; mm2 now contains right-bottom of quad	movq mm5, mm4		; byte compare of mm0 with mm1 store in mm5	;pcmpeqb mm3, mm1		; byte compare mm3 with mm0 and store in mm3	pcmpeqw mm3, mm1		; word compare mm3 with mm0 and store in mm3	pand mm3, mm5	movq mm5, mm3		; not mm3 store in mm5      pxor mm5, mm7	pand mm3, mm1	movq mm6, mm0      ;psrlq mm6, 8      psrlq mm6, 16	pand mm5, mm6	por mm3, mm5    ; now write the 16 bytes of the top line      ;psrlq mm2, 8      psrlq mm2, 16      movq mm4, mm2      movq mm6, mm2;      punpcklbw mm4, mm3;      punpckhbw mm6, mm3      punpcklwd mm4, mm3      punpckhwd mm6, mm3;	movq [edi+2],mm4	movq [edi+4],mm4;      psrlq mm0, 56			; 64-8 = 56      psrlq mm0, 48			; 64-16 = 48;	movq [edi+10],mm6	movq [edi+12],mm6      ;psrlq mm1, 56      psrlq mm1, 48;; restore ebp and ecx;	pop ecx	pop ebp;; End of restore;      add edi, 16      add ecx, 16	movd edx, mm0	mov word [_dlx], dx	movd ebx, mm1	mov  dx, bx	pop eax	xchg eax,ecx	dec ecx	jnz near .L0.L333	mov esi, _eagle_buffer	mov ebx, _eagle_buffer+4096	and esi, 0xFFFFFFE0	and ebx, 0xFFFFFFE0	mov ecx,[esp+16+32]	mov edx,[esp+20+32]	mov ax, es	push ax	mov es, dx	mov edi,[esp+26+32]	mov eax,[esp+30+32]	;shr ecx, 5	shr ecx, 4	push ecx.first_loop:	movq mm0, [ esi ]	movq mm1, [ esi + 8 ]	movq mm2, [ esi + 16]	movq mm3, [ esi + 24]	movq mm4, [ esi + 32]	movq mm5, [ esi + 40]	movq mm6, [ esi + 48]	movq mm7, [ esi + 56]	movq [es:edi], mm0	movq [es:edi + 8], mm1	movq [es:edi + 16], mm2	movq [es:edi + 24], mm3	movq [es:edi + 32], mm4	movq [es:edi + 40], mm5	movq [es:edi + 48], mm6	movq [es:edi + 56], mm7	add edi, 64	add esi, 64	dec ecx	jnz .first_loop	pop ecx	mov edi, eax	mov esi, ebx.second_loop:	movq mm0, [ esi ]	movq mm1, [ esi + 8 ]	movq mm2, [ esi + 16]	movq mm3, [ esi + 24]	movq mm4, [ esi + 32]	movq mm5, [ esi + 40]	movq mm6, [ esi + 48]	movq mm7, [ esi + 56]	movq [es:edi], mm0	movq [es:edi + 8], mm1	movq [es:edi + 16], mm2	movq [es:edi + 24], mm3	movq [es:edi + 32], mm4	movq [es:edi + 40], mm5	movq [es:edi + 48], mm6	movq [es:edi + 56], mm7	add edi, 64	add esi, 64	dec ecx	jz .continue_here	jmp .second_loop.continue_here	pop ax	mov es, ax	pop eax	mov ebp, eax	emms	popad	ret;;eagle_bmp   (  unsigned long *lb,;               unsigned long *lb2,;               int width,;		    screen_address1,;		    screen_address2 )_eagle_bmp:	push ebp	mov ebp, esp      mov esi,[ebp+8]	mov ebx,[ebp+12]	mov ecx,[ebp+16]	mov edi, _eagle_buffer	mov eax, _eagle_buffer+2048	and edi, 0xFFFFFFE0	and eax, 0xFFFFFFE0 	mov ebp, ebx	shr ecx,2	xor dx,dx.L0		push ecx	xchg eax,ecx	mov eax, [esi]	add esi,4	mov ebx,[ebp]	add ebp,4	push ebp	cmp eax,ebx	jne near .L999	rol eax, 8	cmp eax,ebx	jne .L998	jmp .L997.L998	ror eax,8	jmp .L999.L997	ror eax,8	cmp dl, dh	jne near .L999	cmp dl, al	jne near .L999	mov [edi],eax	mov [ecx],ebx	mov [edi+4],eax	mov [ecx+4],ebx	add edi,8	add ecx,8	pop eax	mov ebp,eax	pop eax	xchg eax,ecx	dec ecx	cmp ecx, 0	je near .L333	push ecx	xchg eax,ecx	mov eax, [esi]	add esi,4	cmp ebx, eax	jne .L888	mov ebx,[ebp]	add ebp,4	cmp ebx, eax	jne .L889	mov [edi],eax	mov [ecx],ebx	mov [edi+4],eax	pop eax	mov [ecx+4],ebx	add edi,8	add ecx,8	xchg eax,ecx	dec ecx	jnz near .L0	jmp .L333.L888	mov ebx,[ebp]	add ebp, 4.L889	push ebp.L999	cmp dh, bl	jne .L6001.L1001	cmp bl, al	jne .L3001.L2001	mov [edi],al	mov [ecx],dh	mov [edi+1],al	mov [ecx+1],bl	jmp .L11.L3001	cmp dh, dl	jne .L5001.L4001	mov [edi], dx	mov [ecx], dx	jmp .L11.L5001	mov [edi],dl	mov [ecx],dh	mov [edi+1],al	mov [ecx+1],bl	jmp .L11.L6001	cmp dl, al	jne .L12001.L7001	cmp dl, dh	jne .L9001.L8001	mov [edi], dx	mov [ecx], dx	jmp .L11.L9001	cmp al,bl	jne .L11001.L10001	mov [edi],dl	mov [ecx],bl	mov [edi+1],al	mov [ecx+1],bl	jmp .L11.L11001.L12001	mov [edi],dl	mov [ecx],dh	mov [edi+1],al	mov [ecx+1],bl.L11	cmp bl, bh	jne .L6002.L1002	cmp bh, ah	jne .L3002.L2002	mov [edi+2],bx	mov [ecx+2],bx	jmp .L12.L3002	cmp bl, al	jne .L5002.L4002	mov [edi+2],bx	mov [ecx+2],bx	jmp .L12.L5002	mov [edi+2],ax	mov [ecx+2],bx	jmp .L12.L6002	cmp al, ah	jne .L12002.L7002	cmp al, bl	jne .L9002.L8002	mov [ecx+2],ax	mov [edi+2],ax	jmp .L12.L9002	cmp ah,bh	jne .L11002.L10002	mov [ecx+2],ax	mov [edi+2],ax	jmp .L12.L11002.L12002	mov [edi+2], ax	mov [ecx+2], bx	.L12	ror ebx, 8	ror eax, 8	cmp bl, bh	jne .L6003.L1003	cmp bh, ah	jne .L3003.L2003	mov [edi+4],bx	mov [ecx+4],bx	jmp .L13.L3003	cmp bl, al	jne .L5003.L4003	mov [edi+4],bx	mov [ecx+4],bx	jmp .L13.L5003	mov [edi+4], ax	mov [ecx+4], bx	jmp .L13.L6003	cmp al, ah	jne .L12003.L7003	cmp al, bl	jne .L9003.L8003	mov [ecx+4], ax	mov [edi+4], ax	jmp .L13.L9003	cmp ah,bh	jne .L11003.L10003	mov [ecx+4], ax	mov [edi+4], ax	jmp .L13.L11003.L12003	mov [edi+4],ax	mov [ecx+4],bx.L13	ror ebx, 8	ror eax, 8	cmp bl, bh	jne .L6004.L1004	cmp bh, ah	jne .L3004.L2004	mov [edi+6], bx	mov [ecx+6], bx	jmp .L14.L3004	cmp bl, al	jne .L5004.L4004	mov [edi+6], bx	mov [ecx+6], bx	jmp .L14.L5004	mov [edi+6], ax	mov [ecx+6], bx	jmp .L14.L6004	cmp al, ah	jne .L12004.L7004	cmp al, bl	jne .L9004.L8004	mov [ecx+6], ax	mov [edi+6], ax	jmp .L14.L9004	cmp ah,bh	jne .L11004.L10004	mov [ecx+6], ax	mov [edi+6], ax	jmp .L14.L11004.L12004	mov [edi+6], ax	mov [ecx+6], bx.L14	add edi, 8	mov dl, ah	add ecx, 8	mov dh, bh	pop eax;	mov eax, ebp	Was this an unnoticed error ?	mov ebp, eax	pop eax	xchg eax,ecx	dec ecx	jnz near .L0.L333	mov esi, _eagle_buffer	mov ebx, _eagle_buffer+2048	and esi, 0xFFFFFFE0	and ebx, 0xFFFFFFE0	mov ecx,[esp+16];	mov edx,[esp+20];	mov ax, es;	push ax;	mov es, dx	mov edi,[esp+20]	mov eax,[esp+24]	cld	push ecx	rep	movsd	pop ecx	mov edi, eax	mov esi, ebx		rep	movsd;	pop ax;	mov es, ax	pop eax	mov ebp, eax	ret	SECTION .bss_offset32		resb 32_eagle_buffer	resb 16384_tripline1		resb 8_tripline2		resb 8_tripline3		resb 8_dlx			resb 32

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -