📄 main.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 + -