view code/as/reg.gcc.s @ 0:02656ea776f3

Regexp-Compiler with LLVM
author ryoma <e075725@ie.u-ryukyu.ac.jp>
date Tue, 15 Jun 2010 00:54:59 +0900
parents
children
line wrap: on
line source

	.cstring
LC0:
	.ascii "\12string matches regexp. \12\0"
	.align 2
LC1:
	.ascii "\12string does not match regexp. \12\0"
	.text
	.align 4,0x90
.globl _state_8
_state_8:
	pushl	%ebp
	movl	%esp, %ebp
	pushl	%ebx
	subl	$20, %esp
	call	___i686.get_pc_thunk.bx
"L00000000001$pb":
	cmpb	$0, (%ecx)
	jne	L5
	leal	LC0-"L00000000001$pb"(%ebx), %eax
	movl	%eax, (%esp)
	call	L_puts$stub
	addl	$20, %esp
	popl	%ebx
	popl	%ebp
	ret
	.align 4,0x90
L5:
	leal	LC1-"L00000000001$pb"(%ebx), %eax
	movl	%eax, (%esp)
	call	L_puts$stub
	addl	$20, %esp
	popl	%ebx
	popl	%ebp
	ret
	.align 4,0x90
.globl _state_1_2_3_5_7
_state_1_2_3_5_7:
	pushl	%ebp
	movl	%esp, %ebp
	pushl	%ebx
	call	___i686.get_pc_thunk.bx
"L00000000002$pb":
	subl	$20, %esp
L22:
	movzbl	(%ecx), %eax
	addl	$1, %ecx
	cmpb	$66, %al
	je	L22
	cmpb	$67, %al
	je	L18
	cmpb	$65, %al
	je	L22
L26:
	leal	LC1-"L00000000002$pb"(%ebx), %eax
	movl	%eax, (%esp)
	call	L_puts$stub
	addl	$20, %esp
	popl	%ebx
	popl	%ebp
	ret
	.align 4,0x90
L18:
	cmpb	$0, (%ecx)
	jne	L26
	leal	LC0-"L00000000002$pb"(%ebx), %eax
	movl	%eax, (%esp)
	call	L_puts$stub
	addl	$20, %esp
	popl	%ebx
	popl	%ebp
	ret
	.align 4,0x90
.globl _state_1_3_4_5_7
_state_1_3_4_5_7:
	pushl	%ebp
	movl	%esp, %ebp
	pushl	%ebx
	call	___i686.get_pc_thunk.bx
"L00000000003$pb":
	subl	$20, %esp
L38:
	movzbl	(%ecx), %eax
	addl	$1, %ecx
	cmpb	$66, %al
	je	L38
	cmpb	$67, %al
	je	L41
	cmpb	$65, %al
	je	L48
L46:
	leal	LC1-"L00000000003$pb"(%ebx), %eax
	movl	%eax, (%esp)
	call	L_puts$stub
	addl	$20, %esp
	popl	%ebx
	popl	%ebp
	ret
	.align 4,0x90
L48:
	addl	$20, %esp
	popl	%ebx
	popl	%ebp
	jmp	_state_1_2_3_5_7
	.align 4,0x90
L41:
	cmpb	$0, (%ecx)
	jne	L46
	leal	LC0-"L00000000003$pb"(%ebx), %eax
	movl	%eax, (%esp)
	call	L_puts$stub
	addl	$20, %esp
	popl	%ebx
	popl	%ebp
	ret
	.align 4,0x90
.globl _state_1_3_5_6_7
_state_1_3_5_6_7:
	pushl	%ebp
	movl	%esp, %ebp
	pushl	%ebx
	subl	$20, %esp
	movzbl	(%ecx), %eax
	call	___i686.get_pc_thunk.bx
"L00000000004$pb":
	leal	1(%ecx), %edx
	cmpb	$66, %al
	je	L63
	cmpb	$67, %al
	je	L53
L72:
	cmpb	$65, %al
	je	L73
L65:
	leal	LC1-"L00000000004$pb"(%ebx), %eax
	movl	%eax, (%esp)
	call	L_puts$stub
	addl	$20, %esp
	popl	%ebx
	popl	%ebp
	ret
	.align 4,0x90
L73:
	addl	$20, %esp
	movl	%edx, %ecx
	popl	%ebx
	popl	%ebp
	jmp	_state_1_2_3_5_7
	.align 4,0x90
L63:
	movzbl	(%edx), %eax
	addl	$1, %edx
	cmpb	$66, %al
	je	L63
	cmpb	$67, %al
	jne	L72
	cmpb	$0, (%edx)
	jne	L65
	leal	LC0-"L00000000004$pb"(%ebx), %eax
	movl	%eax, (%esp)
	call	L_puts$stub
	.align 4,0x90
L74:
	addl	$20, %esp
	popl	%ebx
	popl	%ebp
	ret
	.align 4,0x90
L53:
	cmpb	$0, 1(%ecx)
	jne	L65
	leal	LC0-"L00000000004$pb"(%ebx), %eax
	movl	%eax, (%esp)
	call	L_puts$stub
	jmp	L74
	.cstring
LC2:
	.ascii "regexp: (A|B)*C\0"
LC3:
	.ascii "number of state: 4\0"
LC4:
	.ascii "string: %s\12\0"
	.text
	.align 4,0x90
.globl _main
_main:
	pushl	%ebp
	movl	%esp, %ebp
	pushl	%esi
	pushl	%ebx
	call	___i686.get_pc_thunk.bx
"L00000000005$pb":
	subl	$16, %esp
	movl	12(%ebp), %esi
	leal	LC2-"L00000000005$pb"(%ebx), %eax
	movl	%eax, (%esp)
	call	L_puts$stub
	leal	LC3-"L00000000005$pb"(%ebx), %eax
	movl	%eax, (%esp)
	call	L_puts$stub
	movl	4(%esi), %eax
	movl	%eax, 4(%esp)
	leal	LC4-"L00000000005$pb"(%ebx), %eax
	movl	%eax, (%esp)
	call	L_printf$stub
	movl	4(%esi), %eax
	movzbl	(%eax), %edx
	leal	1(%eax), %ecx
	cmpb	$66, %dl
	je	L89
	cmpb	$67, %dl
	je	L79
	cmpb	$65, %dl
	je	L97
L91:
	leal	LC1-"L00000000005$pb"(%ebx), %eax
	movl	%eax, (%esp)
	call	L_puts$stub
	addl	$16, %esp
	popl	%ebx
	popl	%esi
	popl	%ebp
	ret
	.align 4,0x90
L89:
	movzbl	(%ecx), %eax
	addl	$1, %ecx
	cmpb	$66, %al
	je	L89
	cmpb	$67, %al
	je	L86
	cmpb	$65, %al
	jne	L91
L97:
	addl	$16, %esp
	popl	%ebx
	popl	%esi
	popl	%ebp
	jmp	_state_1_2_3_5_7
	.align 4,0x90
L79:
	cmpb	$0, 1(%eax)
	jne	L91
L96:
	leal	LC0-"L00000000005$pb"(%ebx), %eax
	movl	%eax, (%esp)
	call	L_puts$stub
	addl	$16, %esp
	popl	%ebx
	popl	%esi
	popl	%ebp
	ret
	.align 4,0x90
L86:
	cmpb	$0, (%ecx)
	jne	L91
	.p2align 4,,3
	jmp	L96
	.align 4,0x90
.globl _accept
_accept:
	pushl	%ebp
	movl	%esp, %ebp
	pushl	%ebx
	call	___i686.get_pc_thunk.bx
"L00000000006$pb":
	subl	$20, %esp
	leal	LC0-"L00000000006$pb"(%ebx), %eax
	movl	%eax, (%esp)
	call	L_puts$stub
	addl	$20, %esp
	popl	%ebx
	popl	%ebp
	ret
	.align 4,0x90
.globl _reject
_reject:
	pushl	%ebp
	movl	%esp, %ebp
	pushl	%ebx
	call	___i686.get_pc_thunk.bx
"L00000000007$pb":
	subl	$20, %esp
	leal	LC1-"L00000000007$pb"(%ebx), %eax
	movl	%eax, (%esp)
	call	L_puts$stub
	addl	$20, %esp
	popl	%ebx
	popl	%ebp
	ret
	.picsymbol_stub
L_printf$stub:
	.indirect_symbol _printf
	call	LPC$1
LPC$1:	popl	%eax
	movl	L1$lz-LPC$1(%eax),%edx
	jmp	*%edx
L_printf$stub_binder:
	lea	L1$lz-LPC$1(%eax),%eax
	pushl	%eax
	jmp	dyld_stub_binding_helper
	.lazy_symbol_pointer
L1$lz:
	.indirect_symbol _printf
	.long	L_printf$stub_binder
	.picsymbol_stub
L_puts$stub:
	.indirect_symbol _puts
	call	LPC$2
LPC$2:	popl	%eax
	movl	L2$lz-LPC$2(%eax),%edx
	jmp	*%edx
L_puts$stub_binder:
	lea	L2$lz-LPC$2(%eax),%eax
	pushl	%eax
	jmp	dyld_stub_binding_helper
	.lazy_symbol_pointer
L2$lz:
	.indirect_symbol _puts
	.long	L_puts$stub_binder
	.subsections_via_symbols
	.section __TEXT,__textcoal_nt,coalesced,pure_instructions
	.weak_definition	___i686.get_pc_thunk.bx
	.private_extern	___i686.get_pc_thunk.bx
___i686.get_pc_thunk.bx:
	movl	(%esp), %ebx
	ret