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

📄 attw.s

📁 操作系统SunOS 4.1.3版本的源码
💻 S
字号:
        .seg	"data"        .asciz  "@(#)attw.s 1.1 92/07/30 Copyr 1986 Sun Micro"        .seg	"text"				!       Copyright (c) 1984 by Sun Microsystems, Inc.#include <sun4/asm_linkage.h>!	wattack(int)!! does white/black attack position?.global	_wattack.global	_dir, _boarduleft	= 04040;uright	= 04004;dleft	= 00440;dright	= 00404;left	= 00040;right	= 00004;up	= 04000;down	= 00400;u2r1	= 06004;u1r2	= 04006;d1r2	= 00406;d2r1	= 00604;d2l1	= 00640;d1l2	= 00460;u1l2	= 04060;u2l1	= 06040;! r0 i0! r1 i1! r2 i2! r3 i3! r4 i4! r5 ~o7 #define r_board	%l0#define r_dir	%l1_wattack:	save	%sp, -SA(MINFRAME), %sp	! mov	2(sp),r0	set	_board, r_board	set	_dir, r_dir	sll	%i0, 1, %i0		! asl	r0	lduh	[r_dir + %i0], %i1	! mov	_dir(r0),r1	! moved to delay slot below	! mov	$-2,r2	btst	u2r1, %i1		! bit	$u2r1,r1	bne	1f			! bne	1f	mov	-2, %i2	add	r_board, (-15*2), %g1	ldsh	[%g1 + %i0], %g1	cmp	%g1, %i2		! cmp	_board+[-15.*2](r0),r2	be	2f			! beq	2f	.empty1:	btst	u1r2, %i1		! bit	$u1r2,r1	bne	1f			! bne	1f	.empty	add	r_board, (-6*2), %g1	ldsh	[%g1 + %i0], %g1	cmp	%g1, %i2		! cmp	_board+[-6.*2](r0),r2	be	2f			! beq	2f	.empty1:	btst	d1r2, %i1		! bit	$d1r2,r1	bne	1f			! bne	1f	.empty	add	r_board, (10*2), %g1	ldsh	[%g1 + %i0], %g1	cmp	%g1, %i2		! cmp	_board+[+10.*2](r0),r2	be	2f			! beq	2f	.empty1:	btst	d2r1, %i1		! bit	$d2r1,r1	bne	1f			! bne	1f	.empty	add	r_board, (17*2), %g1	ldsh	[%g1 + %i0], %g1	cmp	%g1, %i2		! cmp	_board+[+17.*2](r0),r2	be	2f			! beq	2f	.empty1:	btst	d2l1, %i1		! bit	$d2l1,r1	bne	1f			! bne	1f	.empty	add	r_board, (15*2), %g1	ldsh	[%g1 + %i0], %g1	cmp	%g1, %i2		! cmp	_board+[+15.*2](r0),r2	be	2f			! beq	2f	.empty1:	btst	d1l2, %i1		! bit	$d1l2,r1	bne	1f			! bne	1f	.empty	add	r_board, (6*2), %g1	ldsh	[%g1 + %i0], %g1	cmp	%g1, %i2		! cmp	_board+[+6.*2](r0),r2	be	2f			! beq	2f	.empty1:	btst	u1l2, %i1		! bit	$u1l2,r1	bne	1f			! bne	1f	.empty	add	r_board, (-10*2), %g1	ldsh	[%g1 + %i0], %g1	cmp	%g1, %i2		! cmp	_board+[-10.*2](r0),r2	be	2f			! beq	2f	.empty1:	btst	u2l1, %i1		! bit	$u2l1,r1	bne	1f			! bne	1f	.empty	add	r_board, (-17*2), %g1	ldsh	[%g1 + %i0], %g1	cmp	%g1, %i2		! cmp	_board+[-17.*2](r0),r2	be	2f			! beq	2f	nop1:	call	wadiag	nop	.half	uleft, -9*2		! jsr	r5,wadiag; uleft; -9.*2	call	wadiag	nop	.half	uright, -7*2		! jsr	r5,wadiag; uright; -7.*2	call	wadiag	nop	.half	dleft, 7*2		! jsr	r5,wadiag; dleft; 7.*2	call	wadiag	nop	.half	dright, 9*2		! jsr	r5,wadiag; dright; 9.*2	call	warank	nop	.half	up, -8*2		! jsr	r5,warank; up; -8.*2	call	warank	nop	.half	left, -1*2		! jsr	r5,warank; left; -1.*2	call	warank	nop	.half	right, 1*2		! jsr	r5,warank; right; 1.*2	call	warank	nop	.half	down, 8*2		! jsr	r5,warank; down; 8.*2	lduh	[r_dir + %i0], %g2	btst	dleft, %g2		! bit	$dleft,_dir(r0)	bne	1f			! bne	1f	.empty	add	r_board, 14, %g1	ldsh	[%g1 + %i0], %g1	cmp	%g1, -1			! cmp	_board+14.(r0),$-1  / pawn?	be	2f			! beq	2f	nop1:	lduh	[r_dir + %i0], %g2	btst	dright, %g2		! bit	$dright,_dir(r0)	bne	1f			! bne	1f	.empty	add	r_board, 18, %g1	ldsh	[%g1 + %i0], %g1	cmp	%g1, -1			! cmp	_board+18.(r0),$-1	bne	1f			! bne	1f	nop2:	ret				! clr	r0	restore	%g0, %g0, %o0		! rts	pc1:	mov	1, %i0			! mov	$1,r0	ret	restore				! rts	pcwadiag:	mov	%i0, %i1		! mov	r0,r1	ldsh	[%o7 + 8], %i2		! mov	(r5)+,r2	ldsh	[%o7 + 10], %i3		! mov	(r5)+,r3	lduh	[r_dir + %i1], %g1	btst	%i2, %g1		! bit	r2,_dir(r1)	bne	1f			! bne	1f	nop	add	%i1, %i3, %i1		! add	r3,r1	ldsh	[r_board + %i1], %i4	! mov	_board(r1),r4	tst	%i4	be	2f			! beq	2f	cmp	%i4, -3			! cmp	r4,$-3	be	9f			! beq	9f	cmp	%i4, -5			! cmp	r4,$-5	be	9f			! beq	9f	cmp	%i4, -6			! cmp	r4,$-6	be	9f			! beq	9f	nop1:	jmp	%o7 + 12		! rts	r5	nop2:	lduh	[r_dir + %i1], %g1	btst	%i2, %g1		! bit	r2,_dir(r1)	bne	2f			! bne	2f	nop	add	%i1, %i3, %i1		! add	r3,r1	ldsh	[r_board + %i1], %i4	! mov	_board(r1),r4	tst	%i4	be	2b			! beq	2b	cmp	%i4, -3			! cmp	r4,$-3	be	9f			! beq	9f	cmp	%i4, -5			! cmp	r4,$-5	be	9f			! beq	9f	nop2:	jmp	%o7 + 12		! rts	r5	nopwarank:	mov	%i0, %i1		! mov	r0,r1	ldsh	[%o7 + 8], %i2		! mov	(r5)+,r2	ldsh	[%o7 + 10], %i3		! mov	(r5)+,r3	lduh	[r_dir + %i1], %g1	btst	%i2, %g1		! bit	r2,_dir(r1)	bne	1f			! bne	1f	nop	add	%i1, %i3, %i1		! add	r3,r1	ldsh	[r_board + %i1], %i4	! mov	_board(r1),r4	tst	%i4	be	2f			! beq	2f	cmp	%i4, -4			! cmp	r4,$-4	be	9f			! beq	9f	cmp	%i4, -5			! cmp	r4,$-5	be	9f			! beq	9f	cmp	%i4, -6			! cmp	r4,$-6	be	9f			! beq	9f	nop1:	jmp	%o7 + 12		! rts	r5	nop2:	lduh	[r_dir + %i1], %g1	btst	%i2, %g1		! bit	r2,_dir(r1)	bne	2f			! bne	2f	nop	add	%i1, %i3, %i1		! add	r3,r1	ldsh	[r_board + %i1], %i4	! mov	_board(r1),r4	tst	%i4	be	2b			! beq	2b	cmp	%i4, -4			! cmp	r4,$-4	be	9f			! beq	9f	cmp	%i4, -5			! cmp	r4,$-5	be	9f			! beq	9f	nop2:	jmp	%o7 + 12		! rts	r5	nop9:					! mov	(sp)+,r5	ret				! clr	r0	restore	%g0, %g0, %o0		! rts	pc

⌨️ 快捷键说明

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