aboutsummaryrefslogtreecommitdiffstats
path: root/lcc/x86/linux/tst/fields.sbk
diff options
context:
space:
mode:
Diffstat (limited to 'lcc/x86/linux/tst/fields.sbk')
-rwxr-xr-xlcc/x86/linux/tst/fields.sbk321
1 files changed, 321 insertions, 0 deletions
diff --git a/lcc/x86/linux/tst/fields.sbk b/lcc/x86/linux/tst/fields.sbk
new file mode 100755
index 0000000..44607ae
--- /dev/null
+++ b/lcc/x86/linux/tst/fields.sbk
@@ -0,0 +1,321 @@
+.data
+.globl x
+.align 4
+.type x,@object
+.size x,16
+x:
+.long 1
+.byte 2
+.space 3
+.byte 3
+.byte 64
+.space 2
+.byte 80
+.byte 6
+.space 2
+.globl i
+.align 4
+.type i,@object
+.size i,4
+i:
+.long 16
+.globl y
+.align 4
+.type y,@object
+.size y,8
+y:
+.byte 35
+.space 3
+.byte 9
+.byte 0
+.byte 0
+.byte 0
+.globl main
+.text
+.align 16
+.type main,@function
+main:
+pushl %ebp
+pushl %ebx
+pushl %esi
+pushl %edi
+movl %esp,%ebp
+movsbl x+13,%edi
+pushl %edi
+movl x+12,%edi
+sall $25,%edi
+sarl $29,%edi
+pushl %edi
+movl x+8,%edi
+sall $16,%edi
+sarl $28,%edi
+pushl %edi
+movl x+8,%edi
+sall $20,%edi
+sarl $20,%edi
+pushl %edi
+movsbl x+4,%edi
+pushl %edi
+pushl x
+pushl $.LC4
+call printf
+addl $28,%esp
+pushl y+4
+movl y,%edi
+movl %edi,%esi
+shrl $2,%esi
+andl $15,%esi
+pushl %esi
+andl $3,%edi
+pushl %edi
+pushl $.LC10
+call printf
+addl $16,%esp
+movl x+8,%edi
+andl $0xffff0fff,%edi
+movl i,%esi
+sall $28,%esi
+sarl $28,%esi
+shll $12,%esi
+andl $0xf000,%esi
+orl %esi,%edi
+movl %edi,x+8
+movl x+12,%edi
+andl $0xffffff8f,%edi
+movl %edi,x+12
+movsbl x+13,%edi
+pushl %edi
+movl x+12,%edi
+sall $25,%edi
+sarl $29,%edi
+pushl %edi
+movl x+8,%edi
+sall $16,%edi
+sarl $28,%edi
+pushl %edi
+movl x+8,%edi
+sall $20,%edi
+sarl $20,%edi
+pushl %edi
+movsbl x+4,%edi
+pushl %edi
+pushl x
+pushl $.LC4
+call printf
+addl $28,%esp
+movl y,%edi
+andl $0xfffffffc,%edi
+orl $2,%edi
+movl %edi,y
+movl i,%edi
+movl %edi,y+4
+pushl y+4
+movl y,%edi
+movl %edi,%esi
+shrl $2,%esi
+andl $15,%esi
+pushl %esi
+andl $3,%edi
+pushl %edi
+pushl $.LC10
+call printf
+addl $16,%esp
+pushl $x
+call f2
+addl $4,%esp
+movl $0,%eax
+.LC3:
+movl %ebp,%esp
+popl %edi
+popl %esi
+popl %ebx
+popl %ebp
+ret
+.Lf21:
+.size main,.Lf21-main
+.globl f1
+.align 16
+.type f1,@function
+f1:
+pushl %ebp
+pushl %ebx
+pushl %esi
+pushl %edi
+movl %esp,%ebp
+movl 20(%ebp),%edi
+andl $0xffffffc3,(,%edi)
+movl 20(%ebp),%edi
+movl (,%edi),%esi
+andl $0xfffffffc,%esi
+movl $0,%ebx
+andl $3,%ebx
+andl $3,%ebx
+orl %ebx,%esi
+movl %esi,(,%edi)
+movl 20(%ebp),%edi
+movl (,%edi),%edi
+andl $60,%edi
+cmpl $0,%edi
+je .LC23
+pushl $.LC25
+call printf
+addl $4,%esp
+.LC23:
+movl 20(%ebp),%edi
+orl $3,(,%edi)
+movl 20(%ebp),%edi
+orl $60,(,%edi)
+movl 20(%ebp),%edi
+movl (,%edi),%edi
+movl %edi,%esi
+shrl $2,%esi
+andl $15,%esi
+pushl %esi
+andl $3,%edi
+pushl %edi
+pushl $.LC26
+call printf
+addl $12,%esp
+movl $0,%eax
+.LC22:
+movl %ebp,%esp
+popl %edi
+popl %esi
+popl %ebx
+popl %ebp
+ret
+.Lf27:
+.size f1,.Lf27-f1
+.globl f2
+.align 16
+.type f2,@function
+f2:
+pushl %ebp
+pushl %ebx
+pushl %esi
+pushl %edi
+movl %esp,%ebp
+subl $4,%esp
+cmpl $0,i
+jne .LC30
+movl $1,-4(%ebp)
+jmp .LC31
+.LC30:
+movl $0,-4(%ebp)
+.LC31:
+movl 20(%ebp),%edi
+movl (,%edi),%esi
+andl $0xfffffffc,%esi
+movl -4(%ebp),%ebx
+andl $3,%ebx
+andl $3,%ebx
+orl %ebx,%esi
+movl %esi,(,%edi)
+movl 20(%ebp),%edi
+pushl %edi
+call f1
+addl $4,%esp
+movl (,%edi),%esi
+andl $0xffffffc3,%esi
+movl $0,%ebx
+andl $15,%ebx
+leal (,%ebx,4),%ebx
+andl $60,%ebx
+orl %ebx,%esi
+movl %esi,(,%edi)
+movl $0,%eax
+.LC28:
+movl %ebp,%esp
+popl %edi
+popl %esi
+popl %ebx
+popl %ebp
+ret
+.Lf32:
+.size f2,.Lf32-f2
+.data
+.align 1
+.LC26:
+.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
+.LC25:
+.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
+.LC10:
+.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
+.LC4:
+.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
+.text
+.ident "LCC: 4.1"