#include <stdio.h>
int test(int a, int b)
{
printf("address of a %x.\n", &a);
printf("address of b %x.\n", &b);
return 0;
}
int main()
{
test(1, 2);
return 0;
}
address of a 1ec62c. address of b 1ec628.
address of a bfd03290. address of b bfd03294.
typedef enum {
LOW_TO_HIGH,
HIGH_TO_LOW,
LEFT_TO_RIGHT,
RIGHT_TO_LEFT,
}stack_direc_t;
int stack_grow_direc()
{
static char *p = NULL;
char c;
if (p == NULL) {
p = &c;
stack_grow_direc();
}
else {
printf("First in stack address is %x.\n", p);
printf("Second in stack address is %x.\n", &c);
if (&c > p) {
printf("Stack grows from low address to high address!\n");
return LOW_TO_HIGH;
}
else {
printf("Stack grows from high address to low address!\n");
return HIGH_TO_LOW;
}
}
}
push arg0 -- High Address push arg1 ... push argn push eip push ebp -- Low address
C代码同上面一样
Ubuntu 32位反汇编:
int main()
{
804846d: 55 push %ebp
804846e: 89 e5 mov %esp,%ebp
8048470: 83 e4 f0 and $0xfffffff0,%esp
8048473: 83 ec 10 sub $0x10,%esp
test(1, 2);
8048476: c7 44 24 04 02 00 00 movl $0x2,0x4(%esp)
804847d: 00
804847e: c7 04 24 01 00 00 00 movl $0x1,(%esp)
8048485: e8 8a ff ff ff call 8048414 <test>
return 0;
804848a: b8 00 00 00 00 mov $0x0,%eax
}
int test(int a, int b)
{
8048414: 55 push %ebp
8048415: 89 e5 mov %esp,%ebp
8048417: 83 ec 18 sub $0x18,%esp
printf("address of a %x.\n", &a);
804841a: b8 60 85 04 08 mov $0x8048560,%eax
804841f: 8d 55 08 lea 0x8(%ebp),%edx
8048422: 89 54 24 04 mov %edx,0x4(%esp)
8048426: 89 04 24 mov %eax,(%esp)
8048429: e8 12 ff ff ff call 8048340 <printf@plt>
return 0;
8048466: b8 00 00 00 00 mov $0x0,%eax
}
Ubuntu 64位反汇编:
int main()
{
40056e: 55 push %rbp
40056f: 48 89 e5 mov %rsp,%rbp
test(1, 2);
400572: be 02 00 00 00 mov $0x2,%esi
400577: bf 01 00 00 00 mov $0x1,%edi
40057c: e8 ac ff ff ff callq 40052d <test>
return 0;
400581: b8 00 00 00 00 mov $0x0,%eax
}
int test(int a, int b)
{
40052d: 55 push %rbp
40052e: 48 89 e5 mov %rsp,%rbp
400531: 48 83 ec 10 sub $0x10,%rsp
400535: 89 7d fc mov %edi,-0x4(%rbp)
400538: 89 75 f8 mov %esi,-0x8(%rbp)
printf("address of a %x.\n", &a);
40053b: 48 8d 45 fc lea -0x4(%rbp),%rax
40053f: 48 89 c6 mov %rax,%rsi
400542: bf 14 06 40 00 mov $0x400614,%edi
400547: b8 00 00 00 00 mov $0x0,%eax
40054c: e8 bf fe ff ff callq 400410 <printf@plt>
return 0;
400567: b8 00 00 00 00 mov $0x0,%eax
}
8048476: c7 44 24 04 02 00 00 movl $0x2,0x4(%esp) 804847d: 00 804847e: c7 04 24 01 00 00 00 movl $0x1,(%esp) 8048485: e8 8a ff ff ff call 8048414 <test>
40056f: 48 89 e5 mov %rsp,%rbp test(1, 2); 400572: be 02 00 00 00 mov $0x2,%esi 400577: bf 01 00 00 00 mov $0x1,%edi 40057c: e8 ac ff ff ff callq 40052d <test>
40052d: 55 push %rbp 40052e: 48 89 e5 mov %rsp,%rbp 400531: 48 83 ec 10 sub $0x10,%rsp 400535: 89 7d fc mov %edi,-0x4(%rbp) 400538: 89 75 f8 mov %esi,-0x8(%rbp)
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有