首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
华为云
V2EX  ›  mintist  ›  全部回复第 1 页 / 共 10 页
回复总数  200
1  2  3  4  5  6  7  8  9  10  
3 天前
回复了 nellace 创建的主题 程序员 近十年科技是不是停滞了
最近 10 年最大的科技进步就是计算力的移动化吧,得益于集成电路的发展,普适计算应该会进一步渗透到更广的地方。
@snnn 可能楼主和我一样,是给自己设计的芯片写代码,然后给别人用的,所以需要比较纠结这些细节,,,
楼主,来看看汇编代码就晓得为啥还是能取到地址了,把代码再精简下,然后结合汇编来看下。


精简的 C++代码:

```c
int main(void)
{

const int &a = 1; // 将变量 a 指向常量的地址,后面使用时可直接引用使用


return 0;
}
```

对应在 ARM-gcc 下的汇编代码:注释是后面添加的

```asm
main:
sub sp, sp, #8 ; 在函数内申请栈空间,通过偏移 sp 来实现

mov r3, #1 ; 将立即数放到寄存器 r3 中
str r3, [sp] ; 将 r3 的值推到栈中
mov r3, sp ; 将 sp 值也就是栈地址保存到 r3 中,也就是放置立即数 1 的内存地址
str r3, [sp, #4] ; 将放置立即数 1 的内存地址放在栈中(带偏置),也就是我们所需要的 a 变量的值,后面需要引用 a 所指向的值时,编译器就去这个地址取出来,再指过去就好了。

; ARM 体系结果默认把第 1 个返回值放到 r0 中,所以在 bx 之前把 r0 的值 0 准备好就可以了
mov r3, #0
mov r0, r3
add sp, sp, #8
bx lr
```

所以,回到“为什么 const 引用可以指向常量还可以取到地址?”这个问题,在汇编代码看来,就是先把立即数 1 放到存储空间(这里是栈空间,如果是全局变量,那么就会在链接时到.rodata 段内存空间),然后再把 a 变量的本身也存下(存的值就是 1 的地址),用的时候取出来指过去就可以了。



详见如下的链接: https://godbolt.org/#g:!((g:!((g:!((h:codeEditor,i:(j:1,lang:c%2B%2B,source:'int+main(void)%0A%7B%0A++++const+int+%26a+%3D+1%3B%0A++++return+0%3B%0A%7D%0A'),l:'5',n:'0',o:'C%2B%2B+source+%231',t:'0')),k:50,l:'4',n:'0',o:'',s:0,t:'0'),(g:!((h:compiler,i:(compiler:arm710,filters:(b:'1',binary:'1',commentOnly:'0',demangle:'0',directives:'0',execute:'1',intel:'0',trim:'0'),lang:c%2B%2B,libs:!(),options:'-fomit-frame-pointer',source:1),l:'5',n:'0',o:'ARM+gcc+7.2.1+(none)+(Editor+%231,+Compiler+%231)+C%2B%2B',t:'0')),k:50,l:'4',n:'0',o:'',s:0,t:'0')),l:'2',n:'0',o:'',t:'0')),version:4
这最后一句,,,⊙﹏⊙
首先,存储的是指纹的特征点,而不是指纹图像,而特征点你可以认为是指纹图像的某种哈希值(这个大家都是程序员应该都懂),是无法通过指纹特征点反向推出指纹图像的;(这也是为什么苹果说就算拿到了也是没有办法还原指纹信息的原因)

另外,指纹特征点数据的存储不管安卓( TEE,可信赖执行环境,是第三方机构做的,和厂商没有关系,其中要用到的硬件存储模块是 TrustZone )还是苹果(不太清楚),都是有一套机制保证的;

所以,据我所知目前国内主流厂商(除非没有名字的山寨)都是采用 TEE 来对指纹进行管理的,所以是很安全的(因为和厂商无关),另一方面,这个问题一旦出现是非常严重的,只要有牌子的厂商就不会在这一块动手脚。
77 天前
回复了 zynlp 创建的主题 程序员 北漂程序员一般能漂几年?
深飘 4 年,看不到头,准备回去了,,,
79 天前
回复了 zj299792458 创建的主题 问与答 有程序员完全不会 c 语言的吗?
@zj299792458 嵌入式还是 C 语言的天下吧,顶多被 C++ 稍微分点,Python 跑个 “ Hello World ” 还行,产品还是算了吧,,,
82 天前
回复了 houlin 创建的主题 问与答 请问 27 岁程序入门,该怎么规划?
加油,楼主,其实大多数研究生毕业也快 26,27 了,所以不算晚。
祝好,,,
177 天前
回复了 shayuvpn0001 创建的主题 程序员 硅工的春天来了?
我司有那么高了,,,
不会是取 special 的吧,,,
又有一大波被倒挂了,,,
259 天前
回复了 YogurtTnT 创建的主题 程序员 上海深圳哪个更适合程序猿呢
@douya0808 好远,,,
不过以后我也觉得往宝安方向发展,而不是惠州方向,,,
278 天前
回复了 junwuhui 创建的主题 全球工单系统 github 挂了
好吧,刚碰到,就过来看看,,,
发泄完,继续,,,
维护指针,不要维护拷贝,,,XD
@x86vk 还真有可能是同一拨人,因为屏下光学指纹对湿手指友好,XD
300 天前
回复了 solooo 创建的主题 互联网 水滴直播关闭了
我认为每个人都有被直播的知情权,显然从 360 的态度和行为上,我恶意的揣测它并不是这样想的
303 天前
回复了 zachguo 创建的主题 Android 多年苹果用户换用安卓的感受
@ihainan 哦,是正面,,,
303 天前
回复了 zachguo 创建的主题 Android 多年苹果用户换用安卓的感受
@ihainan 不得不承认,S8 是三爽做的机子里最好看的,,,
1  2  3  4  5  6  7  8  9  10  
关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   678 人在线   最高记录 3762   ·  
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.1 · 45ms · UTC 20:31 · PVG 04:31 · LAX 13:31 · JFK 16:31
♥ Do have faith in what you're doing.
沪ICP备16043287号-1