`
yaojingguo
  • 浏览: 202770 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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
 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics