Zixin 的个人资料Strolee照片日志列表更多 ![]() | 帮助 |
|
StroleeOn the road of search and search 2009/4/30 《童年的回忆》选自《春夏秋冬》--卢亮辉 以下评论转自水木社区,贴切之至,乐所言之: 这首曲子是我偶然间在民乐队的服务器上找到的 ,当天晚上 ,我躲在被窝里 ,戴上大大的耳机 ,将这首来自卢亮辉的作品听了一遍又一遍 ,直到 MP3电量告急才依依不舍地入睡 .这是我大半年来找到的惟一一首打动我 ,勾起我无尽的回忆与联想的曲子 . ,就像你在寻找着捉迷藏 的玩伴 , "你们快出来呀 " .然后是二胡声部的齐奏 , "我们在这儿呐 !" .儿时的伙伴随着二胡的悠扬百转 ,一个接一个地浮现出来 .笛子姐姐之后也跳出来了 , 还有锁呐叔叔 ,大家在围着你笑 :"快看快 看 ,这是咱家谁回来啦 !" 一段飚车过后 ,乐曲又回到了主旋 ,这段听起来像是全家人坐在炉前 ,细数成长过程中的快乐 伤感委屈 ,锁呐叔叔拍着你的肩膀 ,说孩子别怕 ,你还有我们呐 .你还有我们呐. 你还有我们呐.
2009/2/15 《春夏秋冬》卢亮辉雨果推出的這只《春夏秋冬》,收錄了盧亮輝先生創作的一係列民樂作品,由臺灣省的高雄市國樂團演奏、胡炳旭指揮,整只唱片的曲風很大氣,而且很有新意,個人特別喜歡第一段《春》,全曲表現了對春天景色的讚美和歌頌,同時對未來充滿信心和希望。即使你沒有看到唱片的說明,一聽這首樂曲,就已經能體會到樂曲所表達的是春天的生命力,讓人聽起來很舒暢的感覺。另外整只唱片的錄音及監制是易有伍先生,其錄音技巧的確厲害,即使是如此大棚的的民樂隊都能把握得如此好,樂器的細致和整體的動態都能有很好的平衡,在國內出版的唱片裏面,都算是代表作了。喜歡民樂,又想有些新意的朋友,這只既富欣賞性又發燒的唱片相當值得留意。
2008/12/31 At the end of 20082008 Summary
1.Research
科研道路还算平坦,也掌握了基本的方法,将来的道路还很长,希望来年能有更多收获。
2.Music
民乐队一直在坚持,认识了很多人,有了很多交流。希望民乐队在2009年能够在艰难的条件下能取得更大的进步。
3.Health
总是被各种各样的事情打乱了锻炼,但保持了健康的身体,希望来年有提高。
4.Family
家人平安健康就是最大的幸福,祝他们来年更安康。 2008/12/9 DSP编程中的Volatile关键字 【First Reference】 volatile提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据。如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,将出现不一致的现象。下面举例说明。在DSP开发中,经常需要等待某个事件的触发,所以经常会写出这样的程序: short flag; void test() { do1(); while(flag==0); do2(); }这段程序等待内存变量flag的值变为1(怀疑此处是0,有点疑问,)之后才运行do2()。变量flag的值由别的程序更改,这个程序可能是某个硬件中断服务程序。例如:如果某个按钮按下的话,就会对DSP产生中断,在按键中断程序中修改flag为1,这样上面的程序就能够得以继续运行。但是,编译器并不知道flag的值会被别的程序修改,因此在它进行优化的时候,可能会把flag的值先读入某个寄存器,然后等待那个寄存器变为1。如果不幸进行了这样的优化,那么while循环就变成了死循环,因为寄存器的内容不可能被中断服务程序修改。为了让程序每次都读取真正flag变量的值,就需要定义为如下形式: volatile short flag; 需要注意的是,没有volatile也可能能正常运行,但是可能修改了编译器的优化级别之后就又不能正常运行了。因此经常会出现debug版本正常,但是release版本却不能正常的问题。所以为了安全起见,只要是等待别的程序修改某个变量的话,就加上volatile关键字。 【Second Reference】 有关volatile的解释(转)2008-10-15 17:35 volatile关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改,比如:操作系统、硬件或者其它线程等。遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问。 使用该关键字的例子如下: int volatile nVint; 当要求使用volatile 声明的变量的值的时候,系统总是重新从它所在的内存读取数据,即使它前面的指令刚刚从该处读取过数据。而且读取的数据立刻被保存。 例如: volatile int i=10; int a = i;...//其他代码,并未明确告诉编译器,对i进行过操作 int b = i; volatile 指出 i是随时可能发生变化的,每次使用它的时候必须从i的地址中读取,因而编译器生成的汇编代码会重新从i的地址读取数据放在b中。而优化做法是,由于编译器发现两次从i读数据的代码之间的代码没有对i进行过操作,它会自动把上次读的数据放在b中。而不是重新从i里面读。这样以来,如果i是一个寄存器变量或者表示一个端口数据就容易出错,所以说volatile可以保证对特殊地址的稳定访问。 |
|
||||
|
|