Assembly code for stack array initialization

I develop the code with x86 gcc.

 

The C code:

 

 

#include <stdio.h>

void test() {
	int i;
	int array[3] = {0};

	for (i = 0; i < 3; i++)
		printf("array[%d] = %d\n", i, array[i]);
}

int main(int argc, const char *argv[]) {
	test();
	return 0;
}

 

 The assembly code:

 

	.file	"init.c"
	.section	.rodata
.LC0:
	.string	"array[%d] = %d\n"
	.text
.globl test
	.type	test, @function
test:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$40, %esp
  # Code for array initialization
	movl	$0, -24(%ebp)
	movl	$0, -20(%ebp)
	movl	$0, -16(%ebp)

	movl	$0, -12(%ebp)
	jmp	.L2
.L3:
	movl	-12(%ebp), %eax
	movl	-24(%ebp,%eax,4), %edx
	movl	$.LC0, %eax
	movl	%edx, 8(%esp)
	movl	-12(%ebp), %edx
	movl	%edx, 4(%esp)
	movl	%eax, (%esp)
	call	printf
	addl	$1, -12(%ebp)
.L2:
	cmpl	$2, -12(%ebp)
	jle	.L3
	leave
	ret
	.size	test, .-test
.globl main
	.type	main, @function
main:
	pushl	%ebp
	movl	%esp, %ebp
	andl	$-16, %esp
	call	test
	movl	$0, %eax
	movl	%ebp, %esp
	popl	%ebp
	ret
	.size	main, .-main
	.ident	"GCC: (Ubuntu 4.4.3-4ubuntu5.1) 4.4.3"
	.section	.note.GNU-stack,"",@progbits
 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值