c-arith_exp.s
来自「一个编译器的例子,基于c语言,在linux下开发 现在了简单的c语言例子」· S 代码 · 共 130 行
S
130 行
# start of the file.include "defines.h" # system call numbers.include "c-arith_exp.literals" # include the string literal file .global _start .bss .align 4_data:.text .align 4_start: pushl %ebp # save the ebp address movl %esp, %ebp subl $16, %esp # allocate space for local variables movl $1, -4(%ebp) pushl %eax popl %eax movl $10, -8(%ebp) pushl %eax popl %eax movl $100, -12(%ebp) pushl %eax popl %eax leal -16(%ebp), %eax pushl %eax pushl -4(%ebp) pushl -8(%ebp) # arithmetic calculate popl %ebx addl %ebx, (%esp) popl %ebx popl %eax movl %ebx, (%eax) pushl (%eax) popl %eax leal -16(%ebp), %eax pushl %eax pushl -4(%ebp) pushl -8(%ebp) # arithmetic calculate popl %ebx subl %ebx, (%esp) popl %ebx popl %eax movl %ebx, (%eax) pushl (%eax) popl %eax leal -16(%ebp), %eax pushl %eax pushl -8(%ebp) pushl -12(%ebp) # arithmetic calculate popl %ebx popl %eax imull %ebx, %eax pushl %eax popl %ebx popl %eax movl %ebx, (%eax) pushl (%eax) popl %eax leal -16(%ebp), %eax pushl %eax pushl -12(%ebp) pushl -8(%ebp) # arithmetic calculate popl %ebx popl %eax cltd idivl %ebx pushl %eax popl %ebx popl %eax movl %ebx, (%eax) pushl (%eax) popl %eax leal -16(%ebp), %eax pushl %eax pushl -12(%ebp) pushl $60 # arithmetic calculate popl %ebx popl %eax cltd idivl %ebx movl %edx, %eax pushl %eax popl %ebx popl %eax movl %ebx, (%eax) pushl (%eax) popl %eax leal -16(%ebp), %eax pushl %eax pushl -4(%ebp) pushl -8(%ebp) pushl -12(%ebp) # arithmetic calculate popl %ebx popl %eax imull %ebx, %eax pushl %eax # arithmetic calculate popl %ebx addl %ebx, (%esp) pushl $4 # arithmetic calculate popl %ebx subl %ebx, (%esp) popl %ebx popl %eax movl %ebx, (%eax) pushl (%eax) popl %eax movl $SYS_write, %eax # load the write call number movl $STDOUT, %ebx # get the output channel movl $literal0,%ecx # get the literal string movl $len0,%edx # string length int $0x80 movl -16(%ebp),%eax # get the integer value of the ID call ishow call newline pushl $0 popl %eax # save the return value in eax movl %ebp, %esp popl %ebp # restore the ebp address movl $SYS_exit,%eax # load the exit call number movl $0,%ebx # load the exit code int $0x80 # and exit! # end of the file
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?