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

📄 main.s

📁 在linux下实行的简单的c语言编译器
💻 S
字号:
#main.S: target asm file generated by BenC#Benfaung @ Copyrights#http://www.benfaung.org#------------------------------.section .data.section .bss.section .text	.type f, @functionf:	enter	$4,	$0	#Initiate Varible with int:	pushl	%eax	pushl	%eax	movl	$1,	%eax	pushl	%ebp	addl	$-4,	%ebp	movl	%eax,	(%ebp)	popl	%ebp	popl	%eax	#Initiate Varible with int:	pushl	%eax	pushl	%eax	movl	$1,	%eax	pushl	%ebp	addl	$-8,	%ebp	movl	%eax,	(%ebp)	popl	%ebp	popl	%eax	#Initiate Varible with int:	pushl	%eax	pushl	%eax	movl	$1,	%eax	pushl	%ebp	addl	$-12,	%ebp	movl	%eax,	(%ebp)	popl	%ebp	popl	%eax	#declare variable without initiation:	pushl	%eax	#If Stmt:	#load a constant:	movl	$0,	%eax	pushl	%eax	#eq expr:	popl	%ebx	popl	%eax	cmpl	%ebx,	%eax	je	.LABEL0	movl	$0,	%eax	pushl	%eax	jmp	.LABEL1	.LABEL0:	movl	$1,	%eax	.LABEL1:	#load a constant:	movl	$1,	%eax	pushl	%eax	#eq expr:	popl	%ebx	popl	%eax	cmpl	%ebx,	%eax	je	.LABEL2	movl	$0,	%eax	pushl	%eax	jmp	.LABEL3	.LABEL2:	movl	$1,	%eax	.LABEL3:	#or expr:	popl	%ebx	popl	%eax	or	%ebx,	%eax	pushl	%eax	popl	%eax	cmpl	$0,	%eax	je	.L1	#load a constant:	movl	$1,	%eax	pushl	%eax	#return with int:	popl	%eax	pushl	%ebp	addl	$-18,	%ebp	movl	%eax,	(%ebp)	popl	%ebp	leave	ret.L1 :	#while stmt:.L3 :	#load a value from memory:	pushl	%ebp	addl	$-12,	%ebp	movl	(%ebp),	%eax	popl	%ebp	pushl	%eax	#lt expr:	popl	%ebx	popl	%eax	cmpl	%ebx,	%eax	jl	.LABEL4	movl	$0,	%eax	pushl	%eax	jmp	.LABEL5	.LABEL4:	movl	$1,	%eax	.LABEL5:	popl	%eax	cmpl	$0,	%eax	je	.L4	#backup memory value:	pushl	-4(%ebp)	#backup memory value:	pushl	-8(%ebp)	#backup memory value:	pushl	-12(%ebp)	#backup memory value:	pushl	-16(%ebp)	#load an address from memory:	movl	%ebp,	%eax	addl	$-4,	%eax	pushl	%eax	#load a value from memory:	pushl	%ebp	addl	$-4,	%ebp	movl	(%ebp),	%eax	popl	%ebp	pushl	%eax	#load a value from memory:	pushl	%ebp	addl	$-8,	%ebp	movl	(%ebp),	%eax	popl	%ebp	pushl	%eax	#add expr:	popl	%ebx	popl	%eax	addl	%ebx,	%eax	pushl	%eax	#store a value to memory:	popl	%ebx	popl	%eax	pushl	%ebp	movl	%eax,	%ebp	movl	%ebx,	(%ebp)	popl	%ebp	#load an address from memory:	movl	%ebp,	%eax	addl	$-8,	%eax	pushl	%eax	#load a value from memory:	pushl	%ebp	addl	$-4,	%ebp	movl	(%ebp),	%eax	popl	%ebp	pushl	%eax	#load a value from memory:	pushl	%ebp	addl	$-8,	%ebp	movl	(%ebp),	%eax	popl	%ebp	pushl	%eax	#add expr:	popl	%ebx	popl	%eax	addl	%ebx,	%eax	pushl	%eax	#store a value to memory:	popl	%ebx	popl	%eax	pushl	%ebp	movl	%eax,	%ebp	movl	%ebx,	(%ebp)	popl	%ebp	#load an address from memory:	movl	%ebp,	%eax	addl	$-12,	%eax	pushl	%eax	#load a value from memory:	pushl	%ebp	addl	$-12,	%ebp	movl	(%ebp),	%eax	popl	%ebp	pushl	%eax	#load a constant:	movl	$1,	%eax	pushl	%eax	#add expr:	popl	%ebx	popl	%eax	addl	%ebx,	%eax	pushl	%eax	#store a value to memory:	popl	%ebx	popl	%eax	pushl	%ebp	movl	%eax,	%ebp	movl	%ebx,	(%ebp)	popl	%ebp	#restore memory value:	popl	%ebx	popl	-4(%ebp)	#restore memory value:	popl	%ebx	popl	-8(%ebp)	#restore memory value:	popl	%ebx	popl	-12(%ebp)	#restore memory value:	popl	%ebx	popl	-16(%ebp)	jmp	.L3.L4 :	#load a value from memory:	pushl	%ebp	addl	$-8,	%ebp	movl	(%ebp),	%eax	popl	%ebp	pushl	%eax	#return with int:	popl	%eax	pushl	%ebp	addl	$-18,	%ebp	movl	%eax,	(%ebp)	popl	%ebp	leave	ret	#return without a value:	leave	ret.global main	.type main, @functionmain:	enter	$0,	$0	#Initiate Varible with int:	pushl	%eax	pushl	%eax	movl	$1,	%eax	pushl	%ebp	addl	$-4,	%ebp	movl	%eax,	(%ebp)	popl	%ebp	popl	%eax	#while stmt:.L5 :	#load a value from memory:	pushl	%ebp	addl	$-4,	%ebp	movl	(%ebp),	%eax	popl	%ebp	pushl	%eax	#load a constant:	movl	$10,	%eax	pushl	%eax	#le expr:	popl	%ebx	popl	%eax	cmpl	%ebx,	%eax	jle	.LABEL6	movl	$0,	%eax	pushl	%eax	jmp	.LABEL7	.LABEL6:	movl	$1,	%eax	.LABEL7:	popl	%eax	cmpl	$0,	%eax	je	.L6	#backup memory value:	pushl	-4(%ebp)	#passing params:	#load a value from memory:	pushl	%ebp	addl	$-4,	%ebp	movl	(%ebp),	%eax	popl	%ebp	pushl	%eax	#call stmt:	call	f	#load an address from memory:	movl	%ebp,	%eax	addl	$-4,	%eax	pushl	%eax	#load a value from memory:	pushl	%ebp	addl	$-4,	%ebp	movl	(%ebp),	%eax	popl	%ebp	pushl	%eax	#load a constant:	movl	$1,	%eax	pushl	%eax	#add expr:	popl	%ebx	popl	%eax	addl	%ebx,	%eax	pushl	%eax	#store a value to memory:	popl	%ebx	popl	%eax	pushl	%ebp	movl	%eax,	%ebp	movl	%ebx,	(%ebp)	popl	%ebp	#restore memory value:	popl	%ebx	popl	-4(%ebp)	jmp	.L5.L6 :	#return without a value:	leave	ret

⌨️ 快捷键说明

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