OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-old/] [binutils-2.18.50/] [gas/] [testsuite/] [gas/] [cfi/] [cfi-x86_64.s] - Rev 816

Compare with Previous | Blame | View Log

	.text
 
#; func_locvars
#; - function with a space on the stack 
#;   allocated for local variables
 
	.type	func_locvars,@function
func_locvars:
	.cfi_startproc
 
	#; alocate space for local vars
	sub	$0x1234,%rsp
	.cfi_adjust_cfa_offset	0x1234
 
	#; dummy body
	movl	$1,%eax
 
	#; release space of local vars and return
	add	$0x1234,%rsp
	.cfi_adjust_cfa_offset	-0x1234
	ret
	.cfi_endproc
 
#; func_prologue
#; - functions that begins with standard
#;   prologue: "pushq %rbp; movq %rsp,%rbp"
 
	.type	func_prologue,@function
func_prologue:
	.cfi_startproc
 
	#; prologue, CFI is valid after 
	#; each instruction.
	pushq	%rbp
	.cfi_def_cfa_offset	16
	.cfi_offset		%rbp, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register	%rbp
 
	#; function body
	call	func_locvars
	addl	$3, %eax
 
	#; epilogue with valid CFI
	#; (we're better than gcc :-)
	leaveq
	.cfi_def_cfa		%rsp, 8
	ret
	.cfi_endproc
 
#; func_otherreg
#; - function that moves frame pointer to 
#;   another register (r12) and then allocates 
#;   a space for local variables
 
	.type	func_otherreg,@function
func_otherreg:
	.cfi_startproc
 
	#; save frame pointer to r8
	movq	%rsp,%r8
	.cfi_def_cfa_register	r8
 
	#; alocate space for local vars
	#;  (no .cfi_{def,adjust}_cfa_offset here,
	#;   because CFA is computed from r8!)
	sub	$100,%rsp
 
	#; function body
	call	func_prologue
	addl	$2, %eax
 
	#; restore frame pointer from r8
	movq	%r8,%rsp
	.cfi_def_cfa_register	rsp
	ret
	.cfi_endproc
 
#; main
#; - typical function
	.type	main,@function
main:
	.cfi_startproc
 
	#; only function body that doesn't
	#; touch the stack at all.
	call	func_otherreg
 
	#; return
	ret
	.cfi_endproc
 
#; _start
#; - standard entry point
 
	.type	_start,@function
	.globl	_start
_start:
	.cfi_startproc
	call	main
	movq	%rax,%rdi
	movq	$0x3c,%rax
	syscall
	hlt
	.cfi_endproc
 
#; func_alldirectives
#; - test for all .cfi directives. 
#;   This function is never called and the CFI info doesn't make sense.
 
	.type	func_alldirectives,@function
func_alldirectives:
	.cfi_startproc simple
	.cfi_def_cfa	rsp,8
	nop
	.cfi_def_cfa_offset	16
	nop
	.cfi_def_cfa_register	r8
	nop
	.cfi_adjust_cfa_offset	0x1234
	nop
	.cfi_offset	%rsi, 0x10
	nop
	.cfi_register	%r8, %r9
	nop
	.cfi_remember_state
	nop
	.cfi_restore %rbp
	nop
	.cfi_undefined %rip
	nop
	.cfi_same_value rbx
	nop
	.cfi_restore_state
	ret
	.cfi_endproc
 
#; func_all_registers
#; - test for all .cfi register numbers. 
#;   This function is never called and the CFI info doesn't make sense.
 
	.type	func_all_registers,@function
func_all_registers:
	.cfi_startproc simple
 
	.cfi_undefined rip	; nop
	.cfi_undefined rax	; nop
	.cfi_undefined rcx	; nop
	.cfi_undefined rdx	; nop
	.cfi_undefined rbx	; nop
	.cfi_undefined rsp	; nop
	.cfi_undefined rbp	; nop
	.cfi_undefined rsi	; nop
	.cfi_undefined rdi	; nop
	.cfi_undefined r8	; nop
	.cfi_undefined r9	; nop
	.cfi_undefined r10	; nop
	.cfi_undefined r11	; nop
	.cfi_undefined r12	; nop
	.cfi_undefined r13	; nop
	.cfi_undefined r14	; nop
	.cfi_undefined r15	; nop
	.cfi_undefined rflags	; nop
 
	.cfi_undefined es	; nop
	.cfi_undefined cs	; nop
	.cfi_undefined ds	; nop
	.cfi_undefined ss	; nop
	.cfi_undefined fs	; nop
	.cfi_undefined gs	; nop
	.cfi_undefined tr	; nop
	.cfi_undefined ldtr	; nop
	.cfi_undefined fs.base	; nop
	.cfi_undefined gs.base	; nop
 
	.cfi_undefined mxcsr	; nop
	.cfi_undefined xmm0	; nop
	.cfi_undefined xmm1	; nop
	.cfi_undefined xmm2	; nop
	.cfi_undefined xmm3	; nop
	.cfi_undefined xmm4	; nop
	.cfi_undefined xmm5	; nop
	.cfi_undefined xmm6	; nop
	.cfi_undefined xmm7	; nop
	.cfi_undefined xmm8	; nop
	.cfi_undefined xmm9	; nop
	.cfi_undefined xmm10	; nop
	.cfi_undefined xmm11	; nop
	.cfi_undefined xmm12	; nop
	.cfi_undefined xmm13	; nop
	.cfi_undefined xmm14	; nop
	.cfi_undefined xmm15	; nop
 
	.cfi_undefined fcw	; nop
	.cfi_undefined fsw	; nop
	.cfi_undefined st	; nop
	.cfi_undefined st(1)	; nop
	.cfi_undefined st(2)	; nop
	.cfi_undefined st(3)	; nop
	.cfi_undefined st(4)	; nop
	.cfi_undefined st(5)	; nop
	.cfi_undefined st(6)	; nop
	.cfi_undefined st(7)	; nop
 
	.cfi_undefined mm0	; nop
	.cfi_undefined mm1	; nop
	.cfi_undefined mm2	; nop
	.cfi_undefined mm3	; nop
	.cfi_undefined mm4	; nop
	.cfi_undefined mm5	; nop
	.cfi_undefined mm6	; nop
	.cfi_undefined mm7	; nop
 
	.cfi_undefined ymm0	; nop
	.cfi_undefined ymm1	; nop
	.cfi_undefined ymm2	; nop
	.cfi_undefined ymm3	; nop
	.cfi_undefined ymm4	; nop
	.cfi_undefined ymm5	; nop
	.cfi_undefined ymm6	; nop
	.cfi_undefined ymm7	; nop
	.cfi_undefined ymm8	; nop
	.cfi_undefined ymm9	; nop
	.cfi_undefined ymm10	; nop
	.cfi_undefined ymm11	; nop
	.cfi_undefined ymm12	; nop
	.cfi_undefined ymm13	; nop
	.cfi_undefined ymm14	; nop
	.cfi_undefined ymm15	; nop
 
	.cfi_endproc
 

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.