- 主题:volatile问题请教
发帖失败,只能贴图:
--
FROM 101.93.241.*
不是强制转换成指针了么
写得有点故弄玄虚, 写成
#define RESET_INT ((*(unsigned int*)(0x40001000)) & 0x400)
不就行了
【 在 chglele (乐乐) 的大作中提到: 】
: 发帖失败,只能贴图:
--
FROM 106.121.158.*
谢谢,所以code中的[]就是直接在当前地址往下顺延的意思?
【 在 tom6bj 的大作中提到: 】:
不是强制转换成指针了么
写得有点故弄玄虚, 写成
#define RESET_INT ((*(unsigned int*
--
FROM 101.93.241.*
谈不上故弄玄虚吧。我看很多嵌入式代码都这样写。
编译器都会自动翻译过去。
这样写的目的主要是看起来直观,不容易出错。
跟芯片手册中基地址+偏移量能够对应上。
【 在 tom6bj 的大作中提到: 】
: 不是强制转换成指针了么
: 写得有点故弄玄虚, 写成
: #define RESET_INT ((*(unsigned int*)(0x40001000)) & 0x400)
: ...................
--
FROM 59.109.156.*
前面是指针啊, 和数组名一样用
【 在 chglele (乐乐) 的大作中提到: 】
谢谢,所以code中的[]就是直接在当前地址往下顺延的意思?
【 在 tom6bj 的大作中提到: 】:
不是强制转换成指针了么
写得有点故弄玄虚, 写成
#define RESET_INT ((*(unsigned int*
--
修改:tom6bj FROM 106.121.158.*
FROM 106.121.158.*
+1
【 在 SlO 的大作中提到: 】
: 谈不上故弄玄虚吧。我看很多嵌入式代码都这样写。
: 编译器都会自动翻译过去。
: 这样写的目的主要是看起来直观,不容易出错。
: ...................
--来自微水木3.5.1
--
FROM 124.65.155.*
除4为啥不是用》
【 在 tom6bj () 的大作中提到: 】
: 前面是指针啊, 和数组名一样用
:
: 【 在 chglele (乐乐) 的大作中提到: 】
: 谢谢,所以code中的[]就是直接在当前地址往下顺延的意思?
--
FROM 117.136.0.*
编译器的常量优化很好的,除常数和移位一样
重要的是可读性了
【 在 Multimeter (无昵称) 的大作中提到: 】
: 除4为啥不是用》
--
修改:zkr FROM 123.118.111.*
FROM 123.118.111.*
初始化无所谓, 这里反正是给人看的
编译时就处理成0x40001000了
什么时候用>>得看需求
【 在 Multimeter (无昵称) 的大作中提到: 】
除4为啥不是用》
【 在 tom6bj () 的大作中提到: 】
: 前面是指针啊, 和数组名一样用
:
: 【 在 chglele (乐乐) 的大作中提到: 】
: 谢谢,所以code中的[]就是直接在当前地址往下顺延的意思?
--
FROM 106.121.158.*
举个例子,绘图之类场合, 最基本的操作,对坐标x, y处写像素c,一般是对显存执行
*(base + y * width + x) = c;
但是实际上的横向分辨率往往是640, 800, 1024,1440, 1920之类数值,都可以凑成少数几个2的整数次幂之和, 写像素又是相对高频的操作
所以当年dos下会根据分辨率, y*640会优化成y*512+y*128 = y<<9+y<<7
y*800会优化成y*512+y*256+y*32再变成移位
现在应该不需要这么折腾了,估计怎么乘都没区别,有区别编译器也大概率替你搞定了。
【 在 tom6bj (tom) 的大作中提到: 】
: 初始化无所谓, 这里反正是给人看的
: 编译时就处理成0x40001000了
: 什么时候用>>得看需求
: ...................
--
修改:tom6bj FROM 106.121.158.*
FROM 106.121.158.*