当前位置: 首页 > wzjs >正文

如何制作一个简易网站事件营销的方法

如何制作一个简易网站,事件营销的方法,绵阳网站,wordpress修改默认后台登录链接前言 这是一个 老生常谈的问题 这里主要是探索在 函数中分配的局部变量 他使用的空间是哪里的空间, 有什么特征 然后 我们来看一下 这里的编译之后的是一个实现 测试用例 和 指针的减法操作 的测试用例一样 只是我们这里 更加关注与 list 和 p1 和 p2 #include<std…

前言

这是一个 老生常谈的问题

这里主要是探索在 函数中分配的局部变量 他使用的空间是哪里的空间, 有什么特征 

然后 我们来看一下 这里的编译之后的是一个实现

 

 

测试用例

和 指针的减法操作 的测试用例一样 

只是我们这里 更加关注与 list 和 p1 和 p2 

#include<stdio.h>typedef struct Person {int age;int height;
//    int field03;
} Person;int main(int argc, char **argv) {struct Person list[10], *p1, *p2;list[0].age = 12;list[2].age = 22;p1 = &list[0];p2 = &list[2];int delta = (int) (p2 - p1);printf(" the delta : %d \n", delta);return 0;}

 

 

查看 list, p1, p2 

运行时上下文如下 

(gdb) b Test17PointerDelta.c:20
Breakpoint 1 at 0x4005df: file Test17PointerDelta.c, line 20.
(gdb) run
Starting program: /root/Desktop/linux/HelloWorld/Test17PointerDeltaBreakpoint 1, main (argc=1, argv=0x7fffffffe578) at Test17PointerDelta.c:20
20          int delta = (int) (p2 - p1);
(gdb) disassemble
Dump of assembler code for function main:0x0000000000400596 <+0>:     push   %rbp0x0000000000400597 <+1>:     mov    %rsp,%rbp0x000000000040059a <+4>:     sub    $0x90,%rsp0x00000000004005a1 <+11>:    mov    %edi,-0x84(%rbp)0x00000000004005a7 <+17>:    mov    %rsi,-0x90(%rbp)0x00000000004005ae <+24>:    mov    %fs:0x28,%rax0x00000000004005b7 <+33>:    mov    %rax,-0x8(%rbp)0x00000000004005bb <+37>:    xor    %eax,%eax0x00000000004005bd <+39>:    movl   $0xc,-0x60(%rbp)0x00000000004005c4 <+46>:    movl   $0x16,-0x50(%rbp)0x00000000004005cb <+53>:    lea    -0x60(%rbp),%rax0x00000000004005cf <+57>:    mov    %rax,-0x70(%rbp)0x00000000004005d3 <+61>:    lea    -0x60(%rbp),%rax0x00000000004005d7 <+65>:    add    $0x10,%rax0x00000000004005db <+69>:    mov    %rax,-0x68(%rbp)
=> 0x00000000004005df <+73>:    mov    -0x68(%rbp),%rdx0x00000000004005e3 <+77>:    mov    -0x70(%rbp),%rax0x00000000004005e7 <+81>:    sub    %rax,%rdx0x00000000004005ea <+84>:    mov    %rdx,%rax0x00000000004005ed <+87>:    sar    $0x3,%rax0x00000000004005f1 <+91>:    mov    %eax,-0x74(%rbp)0x00000000004005f4 <+94>:    mov    -0x74(%rbp),%eax0x00000000004005f7 <+97>:    mov    %eax,%esi0x00000000004005f9 <+99>:    mov    $0x4006b4,%edi0x00000000004005fe <+104>:   mov    $0x0,%eax0x0000000000400603 <+109>:   call   0x400470 <printf@plt>0x0000000000400608 <+114>:   mov    $0x0,%eax0x000000000040060d <+119>:   mov    -0x8(%rbp),%rcx0x0000000000400611 <+123>:   xor    %fs:0x28,%rcx0x000000000040061a <+132>:   je     0x400621 <main+139>0x000000000040061c <+134>:   call   0x400460 <__stack_chk_fail@plt>0x0000000000400621 <+139>:   leave0x0000000000400622 <+140>:   ret
End of assembler dump.
(gdb) info registers
rax            0x7fffffffe440      140737488348224
rbx            0x0                 0
rcx            0x0                 0
rdx            0x7fffffffe588      140737488348552
rsi            0x7fffffffe578      140737488348536
rdi            0x1                 1
rbp            0x7fffffffe490      0x7fffffffe490
rsp            0x7fffffffe400      0x7fffffffe400
r8             0x4006a0            4196000
r9             0x7ffff7de7af0      140737351940848
r10            0x846               2118
r11            0x7ffff7a2d750      140737348032336
r12            0x4004a0            4195488
r13            0x7fffffffe570      140737488348528
r14            0x0                 0
r15            0x0                 0
rip            0x4005df            0x4005df <main+73>
eflags         0x202               [ IF ]
cs             0x33                51
ss             0x2b                43
ds             0x0                 0
es             0x0                 0
fs             0x0                 0
gs             0x0                 0
(gdb) print &list
$1 = (struct Person (*)[10]) 0x7fffffffe430
(gdb) print &p1
$2 = (struct Person **) 0x7fffffffe420
(gdb) print &p2
$3 = (struct Person **) 0x7fffffffe428
(gdb) print &list[9]
$4 = (struct Person *) 0x7fffffffe478
(gdb) print &list[0]
$5 = (struct Person *) 0x7fffffffe430(gdb) x /10gx 0x7fffffffe430
0x7fffffffe430: 0x000000000000000c      0x0000000000000000
0x7fffffffe440: 0x0000000000000016      0x0000000000000000
0x7fffffffe450: 0x0000000000000001      0x000000000040067d
0x7fffffffe460: 0x0000000000000000      0x0000000000000000
0x7fffffffe470: 0x0000000000400630      0x00000000004004a0

 

结合这张图可以更加明晰的看到 list, p1, p2 的相关地址偏移信息 

可以看到的是 局部变量的空间分配时分配在 当前栈帧的局部变量表预留的空间中的

 

 

局部变量的 sizeof

测试用例中增加一个 sizeof 的计算, 然后 查看反汇编之后的 sizeof 为编译计算好的常量 0x50

测试用例如下 

#include<stdio.h>typedef struct Person {int age;int height;
//    int field03;
} Person;int main(int argc, char **argv) {struct Person list[10], *p1, *p2;list[0].age = 12;list[2].age = 22;p1 = &list[0];p2 = &list[2];int delta = (int) (p2 - p1);printf(" the delta : %d \n", delta);printf(" test %d", sizeof(list));return 0;}

 

编译之后的代码如下 

(gdb) disassemble
Dump of assembler code for function main:0x0000000000400596 <+0>:     push   %rbp0x0000000000400597 <+1>:     mov    %rsp,%rbp0x000000000040059a <+4>:     sub    $0x90,%rsp0x00000000004005a1 <+11>:    mov    %edi,-0x84(%rbp)0x00000000004005a7 <+17>:    mov    %rsi,-0x90(%rbp)0x00000000004005ae <+24>:    mov    %fs:0x28,%rax0x00000000004005b7 <+33>:    mov    %rax,-0x8(%rbp)0x00000000004005bb <+37>:    xor    %eax,%eax0x00000000004005bd <+39>:    movl   $0xc,-0x60(%rbp)0x00000000004005c4 <+46>:    movl   $0x16,-0x50(%rbp)0x00000000004005cb <+53>:    lea    -0x60(%rbp),%rax0x00000000004005cf <+57>:    mov    %rax,-0x70(%rbp)0x00000000004005d3 <+61>:    lea    -0x60(%rbp),%rax0x00000000004005d7 <+65>:    add    $0x10,%rax0x00000000004005db <+69>:    mov    %rax,-0x68(%rbp)
=> 0x00000000004005df <+73>:    mov    -0x68(%rbp),%rdx0x00000000004005e3 <+77>:    mov    -0x70(%rbp),%rax0x00000000004005e7 <+81>:    sub    %rax,%rdx0x00000000004005ea <+84>:    mov    %rdx,%rax0x00000000004005ed <+87>:    sar    $0x3,%rax0x00000000004005f1 <+91>:    mov    %eax,-0x74(%rbp)0x00000000004005f4 <+94>:    mov    -0x74(%rbp),%eax0x00000000004005f7 <+97>:    mov    %eax,%esi0x00000000004005f9 <+99>:    mov    $0x4006c4,%edi0x00000000004005fe <+104>:   mov    $0x0,%eax0x0000000000400603 <+109>:   call   0x400470 <printf@plt>0x0000000000400608 <+114>:   mov    $0x50,%esi0x000000000040060d <+119>:   mov    $0x4006d6,%edi0x0000000000400612 <+124>:   mov    $0x0,%eax0x0000000000400617 <+129>:   call   0x400470 <printf@plt>0x000000000040061c <+134>:   mov    $0x0,%eax0x0000000000400621 <+139>:   mov    -0x8(%rbp),%rcx0x0000000000400625 <+143>:   xor    %fs:0x28,%rcx0x000000000040062e <+152>:   je     0x400635 <main+159>0x0000000000400630 <+154>:   call   0x400460 <__stack_chk_fail@plt>0x0000000000400635 <+159>:   leave0x0000000000400636 <+160>:   ret

 

 

 

 


文章转载自:

http://EgxsnfVs.sLtry.cn
http://h2Emj5Dl.sLtry.cn
http://fK6A8UIC.sLtry.cn
http://XeYlOsYJ.sLtry.cn
http://c7PL9OSN.sLtry.cn
http://pqYj5YNx.sLtry.cn
http://CXpdSbGJ.sLtry.cn
http://C5pCKFaE.sLtry.cn
http://t9zyQpUO.sLtry.cn
http://0At0GQW6.sLtry.cn
http://t4cMrJRW.sLtry.cn
http://1KVpxk0c.sLtry.cn
http://wtAmjYiq.sLtry.cn
http://DC81jx1J.sLtry.cn
http://OyI8p4Ic.sLtry.cn
http://nkl3gVE8.sLtry.cn
http://6Ja9SPlI.sLtry.cn
http://VXKrAhk3.sLtry.cn
http://QydLup2X.sLtry.cn
http://CqOcjqGY.sLtry.cn
http://2YnC7nHq.sLtry.cn
http://DsvpUKRk.sLtry.cn
http://pmHqgEbZ.sLtry.cn
http://tqFZAHBs.sLtry.cn
http://gf26bHC9.sLtry.cn
http://RnetozLi.sLtry.cn
http://RMQcq1hl.sLtry.cn
http://bMkWagGq.sLtry.cn
http://7aeANJcZ.sLtry.cn
http://47Bg8COv.sLtry.cn
http://www.dtcms.com/wzjs/754587.html

相关文章:

  • 域名 备案 没有网站网站代理服务器连接失败
  • 如何给网站设置关键词南京的网站建设公司哪家好
  • 阳春网站开发网站怎么做按钮
  • 域名解析 网站港口备案怎么在网站做
  • 网站建设模板软件做公关用的网站
  • 重庆企业站seo漳州微信网站开发
  • 网站建设及编辑岗位职责html5 做网站
  • 网站关键词在哪里添加天津百度推广公司电话
  • 鞍山高新区网站手机app开发网站模板
  • 做网站的市场风险分析及对策织梦的网站收录不好
  • 如何看织梦做的网站的源码昆山城市建设网站
  • 四川建设行业数据共享平台网站问题服务app开发公司
  • 网站备案好麻烦wordpress圈子
  • 做百度推广网站排名用h5做网站首页代码
  • 巴中做网站wordpress自定义鼠标
  • 首都航空公司官方网站长沙专业网站设计服务
  • 东莞网站推广费用wordpress 页面模板 不显示
  • 安阳网站建设价格济南新闻头条最新事件
  • 楚雄网站开发rewlkj株洲网络公司-网站建设怎么样
  • 怎么申请 免费网站空间建设招标网官方网站电脑版
  • 拍卖网站开发网站首页引导页
  • 安顺市建设局网站运维工程师是青春饭吗
  • 网站后台功能需求seo营销专员
  • 会员管理网站ASP建设wordpress的图片主题
  • 外贸网站推广平台蓝颜seo牛成都百度seo代理
  • 欧美风网站建设石家庄科技中心网站
  • 可以做英文单词puzzle的网站网站建设 栏目管理
  • 做原型交互的网站工具太原网站建设世纪优创
  • 怎么做网站自动采集数据库某个网站做拍卖预展的好处
  • 自己做外贸购物网站wordpress框架是什么