首页   注册   登录

northisland

ネット学者 と 錬金術技術者
V2EX 第 104323 号会员,加入于 2015-03-13 15:30:25 +08:00
今日活跃度排名 10311
请教, ls -al 为什么会产生这样的 2 段输出?
问与答  •  northisland  •  2018-12-06 15:28:32 PM  •  最后回复来自 northisland
4
请教各位, Python 能实现这种 with 类么?
问与答  •  northisland  •  2018-10-29 19:14:16 PM  •  最后回复来自 Wincer
8
northisland 最近回复了
iphone 吧,朗读功能对老年人太有用了
@skyeycirno 打开 aqicn 看看中国,今天污染到了什么程度好么?

为了保北京空气,承德关了多少厂,你有数么?

而且你找下近一年的数据,南方随便一个城市,pm2.5 也吊打北京
4 天前
回复了 stebest 创建的主题 程序员 有什么好用的图床推荐
4 天前
回复了 stebest 创建的主题 程序员 有什么好用的图床推荐
太厉害了,扎实!!真好看。

不晓得海信或者海信代工的松下怎么样,家里没舍得买索尼。
13 天前
回复了 northisland 创建的主题 问与答 惭愧,至今不太了解 ++i 和 i++ 的差别
自己找答案毕竟限制于自己的水平,

和在高质量社区发帖探讨一下,对问题的理解不是一个层面,我自己结束此贴

https://stackoverflow.com/questions/48497636/understanding-the-difference-between-i-and-i-at-the-assembly-level

rvalue 和 lvalue,需要从汇编层面才能理解到位


Assembly for `a++`:

0x100000f9b <+27>: movl -0x8(%rbp), %ecx # 读 -0x8(%rbp) 进 %ecx 寄存器
0x100000f9e <+30>: addl $0x1, %ecx # %ecx 寄存器 +1
0x100000fa1 <+33>: movl %ecx, -0x8(%rbp) # 读%ecx 寄存器进 0x8(%rbp)

Assembly for `b++`,是和 a++相同的

0x100000f9b <+27>: movl -0x8(%rbp), %ecx # 读 -0x8(%rbp) 进 %ecx 寄存器
0x100000f9e <+30>: addl $0x1, %ecx # %ecx 寄存器 +1
0x100000fa1 <+33>: movl %ecx, -0x8(%rbp) # 读%ecx 寄存器进 0x8(%rbp)

但是不同点在于,赋值过程

`c = a++` ( rvalue )建立 2 个寄存器

0x100000f54 <+36>: movl -0x8(%rbp), %eax // eax = a # 内存值建立临时寄存器 1
0x100000f57 <+39>: movl %eax, %ecx // ecx = 1 # 寄存器 1 建立寄存器 2
0x100000f59 <+41>: addl $0x1, %ecx // ecx = 2 # 寄存器 2 + 1
0x100000f5c <+44>: movl %ecx, -0x8(%rbp) // a = # 寄存器 2 赋值给 a 的内存值
0x100000f5f <+47>: movl %eax, -0x10(%rbp) // c = eax = 1 # 寄存器 1 赋值给结果内存变量

`d = ++b;` (lvalue) 建立一个寄存器

0x100000f62 <+50>: movl -0xc(%rbp), %eax // eax = b = 1 # 内存值建立寄存器 1
0x100000f65 <+53>: addl $0x1, %eax // eax = 2 # 寄存器+1
0x100000f68 <+56>: movl %eax, -0xc(%rbp) // b = eax = 2 # 寄存器赋值给内存
0x100000f6b <+59>: movl %eax, -0x14(%rbp) // d = eax = 2 # 寄存器赋值给结果内存变量
@sobigfish win10, xbox s 的平台是打通的
xbox store
关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   977 人在线   最高记录 5043   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.3 · 19ms · UTC 18:30 · PVG 02:30 · LAX 10:30 · JFK 13:30
♥ Do have faith in what you're doing.