LinuxDev 板


LINE

※ 引述《mayasky ( )》之铭言: : 不太一样..volatile是说不要最佳化 : 例如对一些I/O mapping 的区段 : 你做最佳化就有可能有问题 : ex. : compiler 会reorder 既然您都提到了 Memory Mapped I/O 就应该用这个来举例搂~ Ex. 程式设定某 Register, 同时 MCU 的 I/O 也会去修改这个 Register 或是某个 Bit 对程式是 Read-only, 写入 0/1 也不会更变他的值 所以 Compiler 预期你的 Register 在写入後也不会挥发掉.. int NonVol() { char *RegA = (char *)0x40000000; *RegA = 0x00; if (0x00 != *RegA) { return 1; } else { return 0; } } int Vol() { volatile char *RegA = (char *)0x40000000; *RegA = 0x00; if (0x00 != *RegA) { return 1; } else { return 0; } } /* End of File */ $ gcc -O3 -S novol.c -o novol.s 这时聪明的 Compiler 会怎麽作最佳化呢? NonVol: .LFB13: xorl %eax, %eax movb $0, 1073741824 ret ; 原本 if (*RegA == 0x00) 被最佳化掉, ; 因为 compiler 预期 0x40000000 不会被改变 ; 所以直接回传 eax == 0 Vol: .LFB14: movb $0, 1073741824 movzbl 1073741824, %eax testb %al, %al setne %al movzbl %al, %eax ret -- It is better to be approximately right than exactly wrong. --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.116.91.238 ※ 编辑: troylee 来自: 122.116.91.238 (11/02 23:38)
1F:→ mayasky:我想他问的是function的declare...这才会对应到他的问题 11/04 00:59
2F:→ mayasky:他问是否和asmlinkage一样..这可以加变数前吗? 11/04 01:00
3F:→ mayasky:且教学最好的方式就是抽象化.发问人不一定懂x86 11/04 01:01
4F:→ mayasky:且您似乎没提到重点?就算是问变数的宣告 11/04 01:21
6F:→ troylee:我的重点在最後最佳化後的组合语言, 很明显看到第一个 11/04 01:30
7F:→ troylee:function 最佳化後连判断都不判断了, 直接回传 0 11/04 01:30
※ 编辑: troylee 来自: 122.116.91.238 (11/04 02:13)
8F:→ clampsakura:其实volatile只是直接操作区域是记忆体. 而非用gpr 11/07 04:28
9F:→ clampsakura:当作是temp. asmlinkage 要看asm code. 一般而言也不 11/07 04:29
10F:→ clampsakura:一定要使用.只要你在asm中按照C规则去传递parameters 11/07 04:29







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Boy-Girl站内搜寻

TOP