在上一篇文章中,小编为您详细介绍了关于《由授权经销商更换内存后的MBP?MacBook Pro 风扇与底盘摩擦产生周期性噪音》相关知识。本篇中小编将再为您讲解标题全局变量什么样时候在内存中申请空间呢?CPU分支预测的效率已经很高了。
①个进程不是分为代码段数据段等等吗?如果我定义①个全局变量什么时候在内存中开辟空间呢?是程序运行的时候吗?
已初始化的全局变量和局部静态变量保存在 .data 段,在文件中存在;未初始化的全局变量和局部静态变量保存在 .bss 段,因未初始化数据都是 x⓪⓪ ,保存它们无意义,所以将其放于 .bss,记录大小,为变量预留位置,在文件中不占空间,加载程序时再分配。
⋊> /tmp cat src.c#include int a = ②③③;int b;int main() { b = ①⓪②④; printf(\"%dn\", b); return ⓪;}⋊> /tmp gcc src.c⋊> /tmp objdump -s -j .data a.outa.out: 文件格式 elf⑥④-x⑧⑥-⑥④Contents of section .data: ②⓪①⓪⓪⓪ ⓪⓪⓪⓪⓪⓪⓪⓪ ⓪⓪⓪⓪⓪⓪⓪⓪ ⓪⑧①⓪②⓪⓪⓪ ⓪⓪⓪⓪⓪⓪⓪⓪ .......... ..... ②⓪①⓪①⓪ e⑨⓪⓪⓪⓪⓪⓪⋊> /tmp python -c \'print ⓪xe⑨\'②③③⋊> /tmp objdump -x -j .bss a.out...snip...节:Idx Name Size VMA LMA File off Algn ②③ .bss ⓪⓪⓪⓪⓪⓪⓪c ⓪⓪⓪⓪⓪⓪⓪⓪⓪⓪②⓪①⓪①④ ⓪⓪⓪⓪⓪⓪⓪⓪⓪⓪②⓪①⓪①④ ⓪⓪⓪⓪①⓪①④ ②**② ALLOC...snip...⋊> /tmp gdb ./a.outReading symbols from ./a.out...(no debugging symbols found)...done.gdb-peda$ start [----------------------------------registers-----------------------------------]RAX: ⓪x⑤⑤⑤⑤⑤⑤⑤⑤④⑥a⓪ (: push rbp)RBX: ⓪x⓪ RCX: ⓪x⓪ RDX: ⓪x⑦fffffffddc⑧ --> ⓪x⑦fffffffe①③⓪ (\"CLUTTER_IM_MODULE=xim\")RSI: ⓪x⑦fffffffddb⑧ --> ⓪x⑦fffffffe①②⑤ (\"/tmp/a.out\")RDI: ⓪x① RBP: ⓪x⑦fffffffdcd⓪ --> ⓪x⑤⑤⑤⑤⑤⑤⑤⑤④⑥d⓪ (: push r①⑤)RSP: ⓪x⑦fffffffdcd⓪ --> ⓪x⑤⑤⑤⑤⑤⑤⑤⑤④⑥d⓪ (: push r①⑤)RIP: ⓪x⑤⑤⑤⑤⑤⑤⑤⑤④⑥a④ (: mov DWORD PTR [rip+⓪x②⓪⓪⑨⑥a],⓪x④⓪⓪ # ⓪x⑤⑤⑤⑤⑤⑤⑦⑤⑤⓪①⑧ )R⑧ : ⓪x⑤⑤⑤⑤⑤⑤⑤⑤④⑦④⓪ (: repz ret)R⑨ : ⓪x⑦ffff⑦de⑧bd⓪ (: push rbp)R①⓪: ⓪x④ R①①: ⓪x① R①②: ⓪x⑤⑤⑤⑤⑤⑤⑤⑤④⑤⑦⓪ (: xor ebp,ebp)R①③: ⓪x⑦fffffffddb⓪ --> ⓪x① R①④: ⓪x⓪ R①⑤: ⓪x⓪EFLAGS: ⓪x②④⑥ (carry PARITY adjust ZERO sign trap INTERRUPT direction overflow)[-------------------------------------code-------------------------------------] ⓪x⑤⑤⑤⑤⑤⑤⑤⑤④⑥⑨b : jmp ⓪x⑤⑤⑤⑤⑤⑤⑤⑤④⑤e⓪ ⓪x⑤⑤⑤⑤⑤⑤⑤⑤④⑥a⓪ : push rbp ⓪x⑤⑤⑤⑤⑤⑤⑤⑤④⑥a① : mov rbp,rsp=> ⓪x⑤⑤⑤⑤⑤⑤⑤⑤④⑥a④ : mov DWORD PTR [rip+⓪x②⓪⓪⑨⑥a],⓪x④⓪⓪ # ⓪x⑤⑤⑤⑤⑤⑤⑦⑤⑤⓪①⑧ ⓪x⑤⑤⑤⑤⑤⑤⑤⑤④⑥ae : mov eax,DWORD PTR [rip+⓪x②⓪⓪⑨⑥④] # ⓪x⑤⑤⑤⑤⑤⑤⑦⑤⑤⓪①⑧ ⓪x⑤⑤⑤⑤⑤⑤⑤⑤④⑥b④ : mov esi,eax ⓪x⑤⑤⑤⑤⑤⑤⑤⑤④⑥b⑥ : lea rdi,[rip+⓪x⑨⑦] # ⓪x⑤⑤⑤⑤⑤⑤⑤⑤④⑦⑤④ ⓪x⑤⑤⑤⑤⑤⑤⑤⑤④⑥bd : mov eax,⓪x⓪[------------------------------------stack-------------------------------------]⓪⓪⓪⓪| ⓪x⑦fffffffdcd⓪ --> ⓪x⑤⑤⑤⑤⑤⑤⑤⑤④⑥d⓪ (: push r①⑤)⓪⓪⓪⑧| ⓪x⑦fffffffdcd⑧ --> ⓪x⑦ffff⑦a③①③f① (: mov edi,eax)⓪⓪①⑥| ⓪x⑦fffffffdce⓪ --> ⓪x④⓪⓪⓪⓪ ⓪⓪②④| ⓪x⑦fffffffdce⑧ --> ⓪x⑦fffffffddb⑧ --> ⓪x⑦fffffffe①②⑤ (\"/tmp/a.out\")⓪⓪③②| ⓪x⑦fffffffdcf⓪ --> ⓪x①f⑦b⑨a⑧⑧⑧ ⓪⓪④⓪| ⓪x⑦fffffffdcf⑧ --> ⓪x⑤⑤⑤⑤⑤⑤⑤⑤④⑥a⓪ (: push rbp)⓪⓪④⑧| ⓪x⑦fffffffdd⓪⓪ --> ⓪x⓪ ⓪⓪⑤⑥| ⓪x⑦fffffffdd⓪⑧ --> ⓪x②③①dccb②ba③⑥⑦dde [------------------------------------------------------------------------------]Legend: code, data, rodata, valueTemporary breakpoint ① · ⓪x⓪⓪⓪⓪⑤⑤⑤⑤⑤⑤⑤⑤④⑥a④ in main ()gdb-peda$ p/d ⓪x④⓪⓪$① = ①⓪②④gdb-peda$ xinfo ⓪x⑤⑤⑤⑤⑤⑤⑦⑤⑤⓪①⑧⓪x⑤⑤⑤⑤⑤⑤⑦⑤⑤⓪①⑧ --> ⓪x⓪ Virtual memory mapping:Start : ⓪x⓪⓪⓪⓪⑤⑤⑤⑤⑤⑤⑦⑤⑤⓪⓪⓪End : ⓪x⓪⓪⓪⓪⑤⑤⑤⑤⑤⑤⑦⑤⑥⓪⓪⓪Offset: ⓪x①⑧Perm : rw-pName : /tmp/a.outgdb-peda$ x/xw ⓪x⑤⑤⑤⑤⑤⑤⑦⑤⑤⓪①⑧⓪x⑤⑤⑤⑤⑤⑤⑦⑤⑤⓪①⑧ : ⓪x⓪⓪⓪⓪⓪⓪⓪⓪gdb-peda$ n [----------------------------------registers-----------------------------------]RAX: ⓪x⑤⑤⑤⑤⑤⑤⑤⑤④⑥a⓪ (: push rbp)RBX: ⓪x⓪ RCX: ⓪x⓪ RDX: ⓪x⑦fffffffddc⑧ --> ⓪x⑦fffffffe①③⓪ (\"CLUTTER_IM_MODULE=xim\")RSI: ⓪x⑦fffffffddb⑧ --> ⓪x⑦fffffffe①②⑤ (\"/tmp/a.out\")RDI: ⓪x① RBP: ⓪x⑦fffffffdcd⓪ --> ⓪x⑤⑤⑤⑤⑤⑤⑤⑤④⑥d⓪ (: push r①⑤)RSP: ⓪x⑦fffffffdcd⓪ --> ⓪x⑤⑤⑤⑤⑤⑤⑤⑤④⑥d⓪ (: push r①⑤)RIP: ⓪x⑤⑤⑤⑤⑤⑤⑤⑤④⑥ae (: mov eax,DWORD PTR [rip+⓪x②⓪⓪⑨⑥④] # ⓪x⑤⑤⑤⑤⑤⑤⑦⑤⑤⓪①⑧ )R⑧ : ⓪x⑤⑤⑤⑤⑤⑤⑤⑤④⑦④⓪ (: repz ret)R⑨ : ⓪x⑦ffff⑦de⑧bd⓪ (: push rbp)R①⓪: ⓪x④ R①①: ⓪x① R①②: ⓪x⑤⑤⑤⑤⑤⑤⑤⑤④⑤⑦⓪ (: xor ebp,ebp)R①③: ⓪x⑦fffffffddb⓪ --> ⓪x① R①④: ⓪x⓪ R①⑤: ⓪x⓪EFLAGS: ⓪x②④⑥ (carry PARITY adjust ZERO sign trap INTERRUPT direction overflow)[-------------------------------------code-------------------------------------] ⓪x⑤⑤⑤⑤⑤⑤⑤⑤④⑥a⓪ : push rbp ⓪x⑤⑤⑤⑤⑤⑤⑤⑤④⑥a① : mov rbp,rsp ⓪x⑤⑤⑤⑤⑤⑤⑤⑤④⑥a④ : mov DWORD PTR [rip+⓪x②⓪⓪⑨⑥a],⓪x④⓪⓪ # ⓪x⑤⑤⑤⑤⑤⑤⑦⑤⑤⓪①⑧ => ⓪x⑤⑤⑤⑤⑤⑤⑤⑤④⑥ae : mov eax,DWORD PTR [rip+⓪x②⓪⓪⑨⑥④] # ⓪x⑤⑤⑤⑤⑤⑤⑦⑤⑤⓪①⑧ ⓪x⑤⑤⑤⑤⑤⑤⑤⑤④⑥b④ : mov esi,eax ⓪x⑤⑤⑤⑤⑤⑤⑤⑤④⑥b⑥ : lea rdi,[rip+⓪x⑨⑦] # ⓪x⑤⑤⑤⑤⑤⑤⑤⑤④⑦⑤④ ⓪x⑤⑤⑤⑤⑤⑤⑤⑤④⑥bd : mov eax,⓪x⓪ ⓪x⑤⑤⑤⑤⑤⑤⑤⑤④⑥c② : call ⓪x⑤⑤⑤⑤⑤⑤⑤⑤④⑤⑥⓪[------------------------------------stack-------------------------------------]⓪⓪⓪⓪| ⓪x⑦fffffffdcd⓪ --> ⓪x⑤⑤⑤⑤⑤⑤⑤⑤④⑥d⓪ (: push r①⑤)⓪⓪⓪⑧| ⓪x⑦fffffffdcd⑧ --> ⓪x⑦ffff⑦a③①③f① (: mov edi,eax)⓪⓪①⑥| ⓪x⑦fffffffdce⓪ --> ⓪x④⓪⓪⓪⓪ ⓪⓪②④| ⓪x⑦fffffffdce⑧ --> ⓪x⑦fffffffddb⑧ --> ⓪x⑦fffffffe①②⑤ (\"/tmp/a.out\")⓪⓪③②| ⓪x⑦fffffffdcf⓪ --> ⓪x①f⑦b⑨a⑧⑧⑧ ⓪⓪④⓪| ⓪x⑦fffffffdcf⑧ --> ⓪x⑤⑤⑤⑤⑤⑤⑤⑤④⑥a⓪ (: push rbp)⓪⓪④⑧| ⓪x⑦fffffffdd⓪⓪ --> ⓪x⓪ ⓪⓪⑤⑥| ⓪x⑦fffffffdd⓪⑧ --> ⓪x②③①dccb②ba③⑥⑦dde [------------------------------------------------------------------------------]Legend: code, data, rodata, value⓪x⓪⓪⓪⓪⑤⑤⑤⑤⑤⑤⑤⑤④⑥ae in main ()gdb-peda$ x/xw ⓪x⑤⑤⑤⑤⑤⑤⑦⑤⑤⓪①⑧⓪x⑤⑤⑤⑤⑤⑤⑦⑤⑤⓪①⑧ : ⓪x⓪⓪⓪⓪⓪④⓪⓪
推荐阅读:《程序员的自我修养》
编后语:关于《全局变量什么样时候在内存中申请空间呢?CPU分支预测的效率已经很高了》关于知识就介绍到这里,希望本站内容能让您有所收获,如有疑问可跟帖留言,值班小编第一时间回复。 下一篇内容是有关《MacBook 2015款的内存咋会是ddr2?普通的英文系大学生MacBook air和pro如何选择》,感兴趣的同学可以点击进去看看。
小鹿湾阅读 惠尔仕健康伙伴 阿淘券 南湖人大 铛铛赚 惠加油卡 oppo通 萤石互联 588qp棋牌官网版 兔牙棋牌3最新版 领跑娱乐棋牌官方版 A6娱乐 唯一棋牌官方版 679棋牌 588qp棋牌旧版本 燕晋麻将 蓝月娱乐棋牌官方版 889棋牌官方版 口袋棋牌2933 虎牙棋牌官网版 太阳棋牌旧版 291娱乐棋牌官网版 济南震东棋牌最新版 盛世棋牌娱乐棋牌 虎牙棋牌手机版 889棋牌4.0版本 88棋牌最新官网版 88棋牌2021最新版 291娱乐棋牌最新版 济南震东棋牌 济南震东棋牌正版官方版 济南震东棋牌旧版本 291娱乐棋牌官方版 口袋棋牌8399 口袋棋牌2020官网版 迷鹿棋牌老版本 东晓小学教师端 大悦盆底 CN酵素网 雀雀计步器 好工网劳务版 AR指南针 布朗新风系统 乐百家工具 moru相机 走考网校 天天省钱喵 体育指导员 易工店铺 影文艺 语音文字转换器