假如汇编语言要实现如下C语言的功能,编译环境Ubuntu14.04(32位)。
#include<stdio.h> int fact_for(int n) {int i;int result = 1;for(i = 2; i <= n; i++)result *= i;return result; }int main(){printf("%d\n", fact_for(3));return 0; }
- 代码for.s
.section .datan: .int 3format: .asciz "%d\n" .section .text .global _start _start:pushl %ebpmovl %esp, %ebpsubl $8, %espmovl n, %ecx movl %ecx, (%esp)call fact_forpushl %eaxpushl $formatcall printfmovl $0, (%esp)call exitfact_for:pushl %ebpmovl %esp, %ebppushl %ebxmovl 8(%ebp), %edx #get nmovl $1, %eax #init resultmovl $2, %ecx #init icmp %ecx, %edxjl .done.loop:imul %ecx, %eaxinc %ecxcmp %ecx, %edxjge .loop.done:popl %ebxpopl %ebpret
- 编译
as for.s -o for.o
- 链接
ld -lc -I /lib/ld-linux.so.2 for.o -o for
- 执行
./for