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

📄 12-huge.s

📁 用Java实现的编译器。把源代码编译成SPARC汇编程序
💻 S
📖 第 1 页 / 共 4 页
字号:
    ! SPARC assembly:     ! Automatically generated by ASM.SPARCGenerator.section	".data".GLOBALFIELD:.ARRAY_OUT_OF_BOUND:	.asciz "testcases/codegen/12-huge.dcf:%d: runtime error: array out of bound; accessing: %d, array size: %d\n"	.align 4.DIVISION_ZERO:	.asciz "testcases/codegen/12-huge.dcf:%d: runtime error: division to zero\n"	.align 4.CONTROL_FALLING_OFF:	.asciz "testcases/codegen/12-huge.dcf:%s: runtime error: control falling off the end of the method: %s\n"	.align 4.section	".text"	.align 4	.global maingurp:	save	%sp, -184, %sp	st	%g0, [%fp-4]	st	%g0, [%fp-8]	st	%g0, [%fp-12]	st	%g0, [%fp-16]	st	%g0, [%fp-20]	st	%g0, [%fp-24]	st	%g0, [%fp-28]	st	%g0, [%fp-32]	st	%g0, [%fp-36]	st	%g0, [%fp-40]	st	%g0, [%fp-44]	st	%g0, [%fp-48]	st	%g0, [%fp-52]	st	%g0, [%fp-56]	st	%g0, [%fp-60]	st	%g0, [%fp-64]	st	%g0, [%fp-68]	st	%g0, [%fp-72]	st	%g0, [%fp-76]	st	%g0, [%fp-80]	st	%g0, [%fp-84]	st	%g0, [%fp-88]	st	%g0, [%fp-92]	st	%g0, [%fp-96]	st	%g0, [%fp-100]	st	%g0, [%fp-104]	st	%g0, [%fp-108]	st	%g0, [%fp-112]	st	%g0, [%fp-116]	st	%g0, [%fp-120]	st	%g0, [%fp-124]	st	%g0, [%fp-128]	st	%g0, [%fp-132]	st	%g0, [%fp-136]	st	%g0, [%fp-140]	st	%g0, [%fp-144]	st	%g0, [%fp-148]	st	%g0, [%fp-152]	st	%g0, [%fp-156]	st	%g0, [%fp-160]	st	%g0, [%fp-164]	st	%g0, [%fp-168]	st	%g0, [%fp-172]	st	%g0, [%fp-176]	st	%g0, [%fp-180]	st	%g0, [%fp-184]	mov	8, %g3	sub	%sp, %g3, %sp	sethi	%hi(.CalloutArg1), %g1	or	%g1, %lo(.CalloutArg1), %g1	! Preparing parameter -> sp% + offset:  	st	%g1, [%sp+92]	! Preparing parameter -> Ro:  	ld	[%sp+92], %o0	call	printf,0	nop	mov	%o0, %l0	mov	8, %g3	add	%sp, %g3, %sp	! Load instruction for the parameter identifier: no need to load  a	! Loading parameter <- Ri:  	! Load instruction for the parameter identifier: no need to load  b	! Loading parameter <- Ri:  	smul	%i0, %i1, %l0	! Load instruction for the parameter identifier: no need to load  e	! Loading parameter <- Ri:  	sub	%l0, %i4, %l1	! Load instruction for the parameter identifier: no need to load  d	! Loading parameter <- Ri:  	add	%l1, %i3, %l0	!Location id store instruction for stmt location:   j = expression	st	%l0, [%fp-8]	mov	8, %g3	sub	%sp, %g3, %sp	sethi	%hi(.CalloutArg2), %g1	or	%g1, %lo(.CalloutArg2), %g1	! Preparing parameter -> sp% + offset:  	st	%g1, [%sp+92]	! Preparing parameter -> Ro:  	ld	[%sp+92], %o0	call	printf,0	nop	mov	%o0, %l0	mov	8, %g3	add	%sp, %g3, %sp	! Load instruction for the location identifier:  j	ld	[%fp-8], %l0	! Move instruction for the int literal:  1	mov	1, %l1	sub	%l0, %l1, %l2	!Location id store instruction for stmt location:   i = expression	st	%l2, [%fp-4]	mov	8, %g3	sub	%sp, %g3, %sp	sethi	%hi(.CalloutArg3), %g1	or	%g1, %lo(.CalloutArg3), %g1	! Preparing parameter -> sp% + offset:  	st	%g1, [%sp+92]	! Preparing parameter -> Ro:  	ld	[%sp+92], %o0	call	printf,0	nop	mov	%o0, %l0	mov	8, %g3	add	%sp, %g3, %sp	! Move instruction for the int literal:  3	mov	3, %l0	! Load instruction for the location identifier:  i	ld	[%fp-4], %l1	add	%l0, %l1, %l2	!Location id store instruction for stmt location:   j = expression	st	%l2, [%fp-8]	mov	8, %g3	sub	%sp, %g3, %sp	sethi	%hi(.CalloutArg4), %g1	or	%g1, %lo(.CalloutArg4), %g1	! Preparing parameter -> sp% + offset:  	st	%g1, [%sp+92]	! Preparing parameter -> Ro:  	ld	[%sp+92], %o0	call	printf,0	nop	mov	%o0, %l0	mov	8, %g3	add	%sp, %g3, %sp	! Load instruction for the location identifier:  i	ld	[%fp-4], %l0	! Load instruction for the location identifier:  j	ld	[%fp-8], %l1	add	%l0, %l1, %l2	! Move instruction for the int literal:  2	mov	2, %l0	sub	%l2, %l0, %l1	!Location id store instruction for stmt location:   k = expression	st	%l1, [%fp-12]	mov	8, %g3	sub	%sp, %g3, %sp	sethi	%hi(.CalloutArg5), %g1	or	%g1, %lo(.CalloutArg5), %g1	! Preparing parameter -> sp% + offset:  	st	%g1, [%sp+92]	! Preparing parameter -> Ro:  	ld	[%sp+92], %o0	call	printf,0	nop	mov	%o0, %l0	mov	8, %g3	add	%sp, %g3, %sp	! Load instruction for the location identifier:  k	ld	[%fp-12], %l0	! Load instruction for the location identifier:  j	ld	[%fp-8], %l1	sub	%l0, %l1, %l2	!Location id store instruction for stmt location:   l = expression	st	%l2, [%fp-16]	mov	8, %g3	sub	%sp, %g3, %sp	sethi	%hi(.CalloutArg6), %g1	or	%g1, %lo(.CalloutArg6), %g1	! Preparing parameter -> sp% + offset:  	st	%g1, [%sp+92]	! Preparing parameter -> Ro:  	ld	[%sp+92], %o0	call	printf,0	nop	mov	%o0, %l0	mov	8, %g3	add	%sp, %g3, %sp	! Load instruction for the location identifier:  i	ld	[%fp-4], %l0	! Load instruction for the location identifier:  k	ld	[%fp-12], %l1	add	%l0, %l1, %l2	!Location id store instruction for stmt location:   m = expression	st	%l2, [%fp-20]	mov	16, %g3	sub	%sp, %g3, %sp	sethi	%hi(.CalloutArg7), %g1	or	%g1, %lo(.CalloutArg7), %g1	! Preparing parameter -> sp% + offset:  	st	%g1, [%sp+92]	! Load instruction for the location identifier:  k	ld	[%fp-12], %l0	! Preparing parameter -> sp%+offset:  	st	%l0, [%sp+96]	! Load instruction for the location identifier:  m	ld	[%fp-20], %l0	! Preparing parameter -> sp%+offset:  	st	%l0, [%sp+100]	! Preparing parameter -> Ro:  	ld	[%sp+92], %o0	! Preparing parameter -> Ro:  	ld	[%sp+96], %o1	! Preparing parameter -> Ro:  	ld	[%sp+100], %o2	call	printf,0	nop	mov	%o0, %l0	mov	16, %g3	add	%sp, %g3, %sp	! Load instruction for the location identifier:  i	ld	[%fp-4], %l0	! Load instruction for the location identifier:  j	ld	[%fp-8], %l1	! Load instruction for the location identifier:  k	ld	[%fp-12], %l2	! Load instruction for the location identifier:  m	ld	[%fp-20], %l3	sub	%l2, %l3, %l4	sub	%l1, %l4, %l2	add	%l0, %l2, %l1	!Location id store instruction for stmt location:   n = expression	st	%l1, [%fp-24]	mov	8, %g3	sub	%sp, %g3, %sp	sethi	%hi(.CalloutArg8), %g1	or	%g1, %lo(.CalloutArg8), %g1	! Preparing parameter -> sp% + offset:  	st	%g1, [%sp+92]	! Preparing parameter -> Ro:  	ld	[%sp+92], %o0	call	printf,0	nop	mov	%o0, %l0	mov	8, %g3	add	%sp, %g3, %sp	! Load instruction for the parameter identifier: no need to load  a	! Loading parameter <- Ri:  	! Move instruction for the int literal:  50	mov	50, %l0	cmp	%i0, %l0	bg	.True10	nop	mov	0, %l1	b	.End10	nop.True10:	mov	1, %l1.End10:	cmp	%g0, %l1	be	.False9	nop	! Load instruction for the parameter identifier: no need to load  a	! Loading parameter <- Ri:  	! Load instruction for the parameter identifier: no need to load  b	! Loading parameter <- Ri:  	add	%i0, %i1, %l0	! Load instruction for the location identifier:  l	ld	[%fp-16], %l1	add	%l0, %l1, %l2	!Location id store instruction for stmt location:   o = expression	st	%l2, [%fp-28]	! Load instruction for the location identifier:  l	ld	[%fp-16], %l0	! Load instruction for the location identifier:  m	ld	[%fp-20], %l1	sub	%l0, %l1, %l2	!Location id store instruction for stmt location:   j = expression	st	%l2, [%fp-8]	! Load instruction for the parameter identifier: no need to load  c	! Loading parameter <- Ri:  	cmp	%g0, %i2	be	.False11	nop	! Load instruction for the parameter identifier: no need to load  e	! Loading parameter <- Ri:  	! Load instruction for the parameter identifier: no need to load  f	! Loading parameter <- Ri:  	add	%i4, %i5, %l0	! Load instruction for the parameter identifier: no need to load  h	! Loading parameter <- fp%+offset:  	ld	[%fp+96], %l1	! Load instruction for the location identifier:  n	ld	[%fp-24], %l2	add	%l1, %l2, %l3	sub	%l0, %l3, %l1	!Location id store instruction for stmt location:   l = expression	st	%l1, [%fp-16]	! Load instruction for the parameter identifier: no need to load  f	! Loading parameter <- Ri:  	! Move instruction for the int literal:  1	mov	1, %l0	sub	%i5, %l0, %l1	!Location id store instruction for stmt location for Parameter:   f = expression	! Store parameter -> Ri:  	mov	%l1, %i5	! Load instruction for the location identifier:  o	ld	[%fp-28], %l0	! Move instruction for the int literal:  3	mov	3, %l1	sub	%l0, %l1, %l2	!Location id store instruction for stmt location:   q = expression	st	%l2, [%fp-36]	b	.End11	nop.False11:	! Load instruction for the location identifier:  o	ld	[%fp-28], %l0	! Move instruction for the int literal:  3	mov	3, %l1	add	%l0, %l1, %l2	!Location id store instruction for stmt location:   q = expression	st	%l2, [%fp-36].End11:	! Load instruction for the parameter identifier: no need to load  c	! Loading parameter <- Ri:  	cmp	%i2, %g0	be	.OrE1False13	nop	mov	1, %g3	b	.OrEnd13	nop.OrE1False13:	! Load instruction for the parameter identifier: no need to load  g	! Loading parameter <- fp%+offset:  	ld	[%fp+92], %l0	mov	%l0, %g3.OrEnd13:	mov	%g3, %l0	cmp	%g0, %l0	be	.False12	nop	! Load instruction for the parameter identifier: no need to load  f	! Loading parameter <- Ri:  	! Load instruction for the parameter identifier: no need to load  e	! Loading parameter <- Ri:  	add	%i5, %i4, %l0	! Load instruction for the parameter identifier: no need to load  h	! Loading parameter <- fp%+offset:  	ld	[%fp+96], %l1	! Load instruction for the parameter identifier: no need to load  b	! Loading parameter <- Ri:  	sub	%l1, %i1, %l2	add	%l0, %l2, %l1	!Location id store instruction for stmt location:   s = expression	st	%l1, [%fp-44]	b	.End12	nop.False12:.End12:	b	.End9	nop.False9:	! Load instruction for the parameter identifier: no need to load  b	! Loading parameter <- Ri:  	! Load instruction for the parameter identifier: no need to load  a	! Loading parameter <- Ri:  	sub	%i1, %i0, %l0	!Location id store instruction for stmt location:   o = expression	st	%l0, [%fp-28]	! Load instruction for the location identifier:  l	ld	[%fp-16], %l0	! Load instruction for the location identifier:  m	ld	[%fp-20], %l1	add	%l0, %l1, %l2	!Location id store instruction for stmt location:   j = expression	st	%l2, [%fp-8]	! Load instruction for the parameter identifier: no need to load  g	! Loading parameter <- fp%+offset:  	ld	[%fp+92], %l0	cmp	%g0, %l0	be	.False14	nop	! Move instruction for the int literal:  3	mov	3, %l0	! Load instruction for the parameter identifier: no need to load  a	! Loading parameter <- Ri:  	! Load instruction for the location identifier:  o	ld	[%fp-28], %l1	sub	%i0, %l1, %l2	add	%l0, %l2, %l1	!Location id store instruction for stmt location for Parameter:   f = expression	! Store parameter -> Ri:  	mov	%l1, %i5	! Move instruction for the int literal:  3	mov	3, %l0	! Load instruction for the location identifier:  o	ld	[%fp-28], %l1	sub	%l0, %l1, %l2	!Location id store instruction for stmt location:   q = expression	st	%l2, [%fp-36]	! Load instruction for the parameter identifier: no need to load  f	! Loading parameter <- Ri:  	! Load instruction for the location identifier:  q	ld	[%fp-36], %l0	add	%i5, %l0, %l1	!Location id store instruction for stmt location:   s = expression	st	%l1, [%fp-44]	b	.End14	nop.False14:	! Move instruction for the int literal:  3	mov	3, %l0	! Load instruction for the location identifier:  o	ld	[%fp-28], %l1	! Load instruction for the parameter identifier: no need to load  a	! Loading parameter <- Ri:  	sub	%l1, %i0, %l2	! Move instruction for the int literal:  2	mov	2, %l1	sub	%l2, %l1, %l3	add	%l0, %l3, %l1	!Location id store instruction for stmt location:   s = expression	st	%l1, [%fp-44]	! Load instruction for the location identifier:  s	ld	[%fp-44], %l0	! Load instruction for the location identifier:  j	ld	[%fp-8], %l1	add	%l0, %l1, %l2	!Location id store instruction for stmt location:   q = expression	st	%l2, [%fp-36]	! Load instruction for the location identifier:  s	ld	[%fp-44], %l0	! Load instruction for the location identifier:  q	ld	[%fp-36], %l1	add	%l0, %l1, %l2	! Load instruction for the location identifier:  q	ld	[%fp-36], %l0	sub	%l2, %l0, %l1	!Location id store instruction for stmt location for Parameter:   f = expression	! Store parameter -> Ri:  	mov	%l1, %i5.End14:.End9:	mov	8, %g3	sub	%sp, %g3, %sp	sethi	%hi(.CalloutArg15), %g1	or	%g1, %lo(.CalloutArg15), %g1	! Preparing parameter -> sp% + offset:  	st	%g1, [%sp+92]	! Preparing parameter -> Ro:  	ld	[%sp+92], %o0	call	printf,0	nop	mov	%o0, %l0	mov	8, %g3	add	%sp, %g3, %sp	! Load instruction for the parameter identifier: no need to load  e

⌨️ 快捷键说明

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