310 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			310 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
.section ".data"
 | 
						|
.global x
 | 
						|
.type x,#object
 | 
						|
.size x,16
 | 
						|
.align 4
 | 
						|
x:
 | 
						|
.word 0x1
 | 
						|
.byte 0x2
 | 
						|
.skip 3
 | 
						|
.byte 0x0
 | 
						|
.byte 0x34
 | 
						|
.skip 2
 | 
						|
.byte 0xa
 | 
						|
.byte 0x6
 | 
						|
.skip 2
 | 
						|
.global i
 | 
						|
.type i,#object
 | 
						|
.size i,4
 | 
						|
.align 4
 | 
						|
i:
 | 
						|
.word 0x10
 | 
						|
.global y
 | 
						|
.type y,#object
 | 
						|
.size y,8
 | 
						|
.align 4
 | 
						|
y:
 | 
						|
.byte 0xe0
 | 
						|
.skip 3
 | 
						|
.byte 0x0
 | 
						|
.byte 0x0
 | 
						|
.byte 0x0
 | 
						|
.byte 0x9
 | 
						|
.global main
 | 
						|
.section ".text"
 | 
						|
.align 4
 | 
						|
main:
 | 
						|
save %sp,-96,%sp
 | 
						|
set .L4,%o0
 | 
						|
set x,%i5
 | 
						|
ld [%i5],%o1
 | 
						|
set x+4,%i5
 | 
						|
ldsb [%i5],%o2
 | 
						|
set x+8,%i5
 | 
						|
ld [%i5],%i5
 | 
						|
sra %i5,20,%o3
 | 
						|
set x+8,%i5
 | 
						|
ld [%i5],%i5
 | 
						|
sll %i5,12,%i5
 | 
						|
sra %i5,28,%o4
 | 
						|
set x+12,%i5
 | 
						|
ld [%i5],%i5
 | 
						|
sll %i5,4,%i5
 | 
						|
sra %i5,29,%o5
 | 
						|
set x+13,%i5
 | 
						|
ldsb [%i5],%i5
 | 
						|
st %i5,[%sp+4*6+68]
 | 
						|
call printf; nop
 | 
						|
set .L10,%o0
 | 
						|
set y,%i5
 | 
						|
ld [%i5],%i5
 | 
						|
srl %i5,30,%i4
 | 
						|
set 3,%i3
 | 
						|
and %i4,%i3,%o1
 | 
						|
srl %i5,26,%i5
 | 
						|
set 15,%i4
 | 
						|
and %i5,%i4,%o2
 | 
						|
set y+4,%i5
 | 
						|
ld [%i5],%o3
 | 
						|
call printf; nop
 | 
						|
set x+8,%i5
 | 
						|
ld [%i5],%i4
 | 
						|
set 0xfff0ffff,%i3
 | 
						|
and %i4,%i3,%i4
 | 
						|
set i,%i3
 | 
						|
ld [%i3],%i3
 | 
						|
sll %i3,28,%i3
 | 
						|
sra %i3,28,%i3
 | 
						|
sll %i3,16,%i3
 | 
						|
set 0xf0000,%i2
 | 
						|
and %i3,%i2,%i3
 | 
						|
or %i4,%i3,%i4
 | 
						|
st %i4,[%i5]
 | 
						|
set x+12,%i5
 | 
						|
ld [%i5],%i4
 | 
						|
set 0xf1ffffff,%i3
 | 
						|
and %i4,%i3,%i4
 | 
						|
st %i4,[%i5]
 | 
						|
set .L4,%o0
 | 
						|
set x,%i5
 | 
						|
ld [%i5],%o1
 | 
						|
set x+4,%i5
 | 
						|
ldsb [%i5],%o2
 | 
						|
set x+8,%i5
 | 
						|
ld [%i5],%i5
 | 
						|
sra %i5,20,%o3
 | 
						|
set x+8,%i5
 | 
						|
ld [%i5],%i5
 | 
						|
sll %i5,12,%i5
 | 
						|
sra %i5,28,%o4
 | 
						|
set x+12,%i5
 | 
						|
ld [%i5],%i5
 | 
						|
sll %i5,4,%i5
 | 
						|
sra %i5,29,%o5
 | 
						|
set x+13,%i5
 | 
						|
ldsb [%i5],%i5
 | 
						|
st %i5,[%sp+4*6+68]
 | 
						|
call printf; nop
 | 
						|
set y,%i5
 | 
						|
ld [%i5],%i4
 | 
						|
set 0x3fffffff,%i3
 | 
						|
and %i4,%i3,%i4
 | 
						|
set 0x80000000,%i3
 | 
						|
or %i4,%i3,%i4
 | 
						|
st %i4,[%i5]
 | 
						|
set y+4,%i5
 | 
						|
set i,%i4
 | 
						|
ld [%i4],%i4
 | 
						|
st %i4,[%i5]
 | 
						|
set .L10,%o0
 | 
						|
set y,%i5
 | 
						|
ld [%i5],%i5
 | 
						|
srl %i5,30,%i4
 | 
						|
set 3,%i3
 | 
						|
and %i4,%i3,%o1
 | 
						|
srl %i5,26,%i5
 | 
						|
set 15,%i4
 | 
						|
and %i5,%i4,%o2
 | 
						|
set y+4,%i5
 | 
						|
ld [%i5],%o3
 | 
						|
call printf; nop
 | 
						|
set x,%o0
 | 
						|
call f2; nop
 | 
						|
mov %g0,%i0
 | 
						|
.L3:
 | 
						|
ret; restore
 | 
						|
.type main,#function
 | 
						|
.size main,.-main
 | 
						|
.global f1
 | 
						|
.align 4
 | 
						|
f1:
 | 
						|
save %sp,-96,%sp
 | 
						|
ld [%i0],%i5
 | 
						|
set 0xc3ffffff,%i4
 | 
						|
and %i5,%i4,%i5
 | 
						|
st %i5,[%i0]
 | 
						|
ld [%i0],%i5
 | 
						|
set 0x3fffffff,%i4
 | 
						|
and %i5,%i4,%i5
 | 
						|
set 3,%i4
 | 
						|
and %g0,%i4,%i4
 | 
						|
sll %i4,30,%i4
 | 
						|
set 0xc0000000,%i3
 | 
						|
and %i4,%i3,%i4
 | 
						|
or %i5,%i4,%i5
 | 
						|
st %i5,[%i0]
 | 
						|
ld [%i0],%i5
 | 
						|
set 0x3c000000,%i4
 | 
						|
and %i5,%i4,%i5
 | 
						|
cmp %i5,%g0; be .L22; nop
 | 
						|
set .L24,%o0
 | 
						|
call printf; nop
 | 
						|
.L22:
 | 
						|
ld [%i0],%i5
 | 
						|
set 0xc0000000,%i4
 | 
						|
or %i5,%i4,%i5
 | 
						|
st %i5,[%i0]
 | 
						|
ld [%i0],%i5
 | 
						|
set 0x3c000000,%i4
 | 
						|
or %i5,%i4,%i5
 | 
						|
st %i5,[%i0]
 | 
						|
set .L25,%o0
 | 
						|
ld [%i0],%i5
 | 
						|
srl %i5,30,%i4
 | 
						|
set 3,%i3
 | 
						|
and %i4,%i3,%o1
 | 
						|
srl %i5,26,%i5
 | 
						|
set 15,%i4
 | 
						|
and %i5,%i4,%o2
 | 
						|
call printf; nop
 | 
						|
mov %g0,%i0
 | 
						|
.L21:
 | 
						|
ret; restore
 | 
						|
.type f1,#function
 | 
						|
.size f1,.-f1
 | 
						|
.global f2
 | 
						|
.align 4
 | 
						|
f2:
 | 
						|
save %sp,-96,%sp
 | 
						|
set i,%i4
 | 
						|
ld [%i4],%i4
 | 
						|
cmp %i4,0; bne .L28; nop
 | 
						|
set 1,%i5
 | 
						|
ba .L29; nop
 | 
						|
.L28:
 | 
						|
mov %g0,%i5
 | 
						|
.L29:
 | 
						|
ld [%i0],%i4
 | 
						|
set 0x3fffffff,%i3
 | 
						|
and %i4,%i3,%i4
 | 
						|
mov %i5,%i3
 | 
						|
set 3,%i2
 | 
						|
and %i3,%i2,%i3
 | 
						|
sll %i3,30,%i3
 | 
						|
set 0xc0000000,%i2
 | 
						|
and %i3,%i2,%i3
 | 
						|
or %i4,%i3,%i4
 | 
						|
st %i4,[%i0]
 | 
						|
mov %i0,%o0
 | 
						|
call f1; nop
 | 
						|
ld [%i0],%i4
 | 
						|
set 0xc3ffffff,%i3
 | 
						|
and %i4,%i3,%i4
 | 
						|
mov %g0,%i3
 | 
						|
set 15,%i2
 | 
						|
and %i3,%i2,%i3
 | 
						|
sll %i3,26,%i3
 | 
						|
set 0x3c000000,%i2
 | 
						|
and %i3,%i2,%i3
 | 
						|
or %i4,%i3,%i4
 | 
						|
st %i4,[%i0]
 | 
						|
mov %g0,%i0
 | 
						|
.L26:
 | 
						|
ret; restore
 | 
						|
.type f2,#function
 | 
						|
.size f2,.-f2
 | 
						|
.section ".rodata"
 | 
						|
.align 1
 | 
						|
.L25:
 | 
						|
.byte 112
 | 
						|
.byte 45
 | 
						|
.byte 62
 | 
						|
.byte 97
 | 
						|
.byte 32
 | 
						|
.byte 61
 | 
						|
.byte 32
 | 
						|
.byte 48
 | 
						|
.byte 120
 | 
						|
.byte 37
 | 
						|
.byte 120
 | 
						|
.byte 44
 | 
						|
.byte 32
 | 
						|
.byte 112
 | 
						|
.byte 45
 | 
						|
.byte 62
 | 
						|
.byte 98
 | 
						|
.byte 32
 | 
						|
.byte 61
 | 
						|
.byte 32
 | 
						|
.byte 48
 | 
						|
.byte 120
 | 
						|
.byte 37
 | 
						|
.byte 120
 | 
						|
.byte 10
 | 
						|
.byte 0
 | 
						|
.align 1
 | 
						|
.L24:
 | 
						|
.byte 112
 | 
						|
.byte 45
 | 
						|
.byte 62
 | 
						|
.byte 98
 | 
						|
.byte 32
 | 
						|
.byte 33
 | 
						|
.byte 61
 | 
						|
.byte 32
 | 
						|
.byte 48
 | 
						|
.byte 33
 | 
						|
.byte 10
 | 
						|
.byte 0
 | 
						|
.align 1
 | 
						|
.L10:
 | 
						|
.byte 121
 | 
						|
.byte 32
 | 
						|
.byte 61
 | 
						|
.byte 32
 | 
						|
.byte 37
 | 
						|
.byte 100
 | 
						|
.byte 32
 | 
						|
.byte 37
 | 
						|
.byte 100
 | 
						|
.byte 32
 | 
						|
.byte 37
 | 
						|
.byte 100
 | 
						|
.byte 10
 | 
						|
.byte 0
 | 
						|
.align 1
 | 
						|
.L4:
 | 
						|
.byte 120
 | 
						|
.byte 32
 | 
						|
.byte 61
 | 
						|
.byte 32
 | 
						|
.byte 37
 | 
						|
.byte 100
 | 
						|
.byte 32
 | 
						|
.byte 37
 | 
						|
.byte 100
 | 
						|
.byte 32
 | 
						|
.byte 37
 | 
						|
.byte 100
 | 
						|
.byte 32
 | 
						|
.byte 37
 | 
						|
.byte 100
 | 
						|
.byte 32
 | 
						|
.byte 37
 | 
						|
.byte 100
 | 
						|
.byte 32
 | 
						|
.byte 37
 | 
						|
.byte 100
 | 
						|
.byte 10
 | 
						|
.byte 0
 |