打印

现在终于感觉不怕汇编了

[复制链接]
楼主: Hello_LeeHom
手机看帖
扫描二维码
随时随地手机跟帖
81
zq1987731| | 2011-2-13 18:18 | 只看该作者 回帖奖励 |倒序浏览
另外,玩DSP汇编的就不用来瞎掺合了,这一行必须的,算法效率至上。
我在这贴中发表的言论也就是为了避免无知新人被误导,玩单片机,不是要你做开发板!会扫扫按键和点点灯就说自己熟练应用单片机的人可不少!单片机不过只是工具,能随手搭门电路就能解决的小事,犯得着上单片机?一切追求高效率是人类发展的必然,舍近求远的行为等同于站在人类发展的对立面!
学得越多越好是没错,但人的精力毕竟有限,玩嵌入式的多面手不是什么都懂,而是需要什么都能快速弄懂!一切以利益为考量,才能迅速在行业中立足!

使用特权

评论回复
82
刘前辈| | 2011-2-13 19:07 | 只看该作者
80楼说的很有道理,不过没有触及我的主题:我还是迷惘:
1、陈家鹄认为工作(打工)跟研究不同,充其量是个工程师而成不了数学家。
2、比如说到圈圈写的51_OS,——这事不说还好。忘了当年论坛上1952出的一道题?当时圈圈的51_OS刚写出来,——显然一道题对圈圈写的OS是一种嘲弄——照1952的讽刺说法。——从那以后,圈圈再也没提过他写的51_OS。依老朽看:正如陈家鹄,圈圈是工程师或者优秀再优秀的工程师,而1952一生不甘于做工程师,他要做数学家的。
照我看,圈圈连OS 原理教材都没研究过,——1952一道题的处理方法书上写的很清楚;他以为51_OS就是个调度器(很多高手说OS就是个切换器)……还是不多说了好,总结起来,123jj的话难忘:“咱学习别人,别光知道抄,如今中国抄都抄的变调……”

     1952那道题用Intel/Keil的RTX51就轻易能解,——而用中国人写的、或者移植的一堆51-OS我都试过,——呵,抄都抄的变调,不行就是不行。究其原因:就是汇编没学好用好。——看别人怎么用汇编的,那才叫欣赏。会用C只是会向人学习,用好汇编才是创新。

.

使用特权

评论回复
83
china_fog| | 2011-2-13 19:21 | 只看该作者
“另外,玩DSP汇编的就不用来瞎掺合了,这一行必须的,算法效率至上。”
看了半天,想想好像就我提到我用DSP些了开方的汇编的程序,原来LS说了半天说的我这种人啊。哈哈

不过,我觉得很好奇啊,这里没有任何说做汇编的神,做C的是人。用我一兄弟说的,现在在大陆那些老板的眼里,其实研发人员就是有尊严的工具。 感情都把自己当了不得的人物,太好笑了。

就像周工说的,学习汇编有助于理解内部架构,有助于更深入知其所以然。我想说半天,大部分说汇编学学挺好的大概也都是这个意思而已。谁都没有想贬低哪种语言。倒是LS一直在贬低汇编。并且以自己的实际工作体会来说明俺们都是在误导新手。在舍近求远的站在人类发展的对立面。太T M好笑了。都上升到这个高度了。

所有的工程师所从事的工作都只是整个行业的沧海一粟而已。

另外我对于DSP汇编就是瞎掺合听着很是不爽,虽然我已经10年不写算法了。我不知道LS具体写过什么算法。我写过的不多,主要在图像处理方面写过一点,诚实的说,大部分都是C语言,而且架构还都是拿的欧洲研究院的原始代码进行的研究。不过好像还是用到了一点点汇编,确实只有一点点。我是侧重硬件系统架构的,软件现在做的很少了,偶尔也写写。我认识的大部分软件工程师都看过汇编,当然确实没有说很精通,但也确实没见到几个说汇编没啥鸟用了,也至多说“现在汇编用的少了”。

再另外,10K月薪那不是工程师的一道坎,300K的年薪才是优秀工程师跟普通工程师的一道坎。毕竟100K年薪在大城市里是个白菜价而已了。不好意思,有点刺激人。

使用特权

评论回复
84
刘前辈| | 2011-2-13 19:36 | 只看该作者
本帖最后由 刘前辈 于 2011-2-13 19:41 编辑

贴一个其他论坛上看来的帖子,主要惊奇于machao是研究生导师,还同意于他那句比那些所谓的在XXX上移植成功了XXX系统的帖子要深入的多.
     要是年轻10年,我老人家应该去考machao老师的研究生。


【楼主位】 liqu
积分:266
派别:
等级:------
来自:
看了"时间触发嵌入式系统设计",问几个时间触发的问题:请看过的网友及"傻孩子","shaozh"帮忙。
1。书中的"任何时候只有一个中断,即调度器的时标中断",绝对是稳定的,但大家作系统时是否有必要必须这样用?是否能完全满足开发需要?
比如一个系统有上、下位机通讯,9600波特率,按键,128*64LCD显示,常用的作法:
void main(void)
{
main_Init();
while(1)
{
if(ms60_Flag)//60ms一个循环,类似调试器的时标
{
Scan_Key();//查键
Key_Deal();//键处理
LCD();//128*64显示
TXUN_Down();//下位机通讯
ms60_Flag = 0;
}
}
}
void TXUN_Up(void) interrupt 4 using 1//与上位机的通讯中断程序
{

}
void Time0(void) interrupt 1 using 2
{
...
ms60_Flag =1;
}
但这样就违背了一个中断的原则,时标中断有与上位机的通讯中断发生。
大家是怎么处理的,用什么样的程序结构?

2.关于调度器的任务划分问题,有LCD显示的系统里,键处理除与菜单有关,更与显示有关,比如设置不同的参数有不同的界面。键处理Key_Deal()是作为一个任务添加到调度器的吗?那LCD()也是一个单独的任务吗?键处理包含了LCD(),或称要调用LCD(),如何划分这两个任务及处理内容的?LCD()还要在退出键处理时显示通讯传来的数据。
  Add_Task(Key_Deal(),1000,1000);
  Add_Task(LCD(),0,500);  
   
2008-03-06,09:15:00   资料  邮件  回复  引用回复   ↑↑   ↓↓           编辑  删除      

【1楼】 machao
积分:5726
派别:
等级:------
来自:
支持一下该帖子的作者.我认为他确实经过自己的分析和思考,并提出了2个非常重要的问题.比那些所谓的在XXX上移植成功了XXX系统的帖子要深入的多。
"时间触发嵌入式系统设计"我也看过,感觉上这或许是一个能在8位机上使用的,编写稍微复杂系统软件的方式,含有OS的基本思想和方法,但比OS要小,在小系统中能实际的应用.

问题在于在这个"时间触发嵌入式"的系统中,其它中断的使用与时标中断的矛盾.在OS中,也需要使用一个T/C,产生任务切换的时标,其它中断出现后,OS作为优先级高的任务,切换到该任务执行.而在"时间触发嵌入式"的系统中,任务是按时间序列执行的,如果使用和发生了其它中断,就可能破坏了时间序列.

第2个问题是使用OS中的一个普遍存在的问题,就是任何划分"任务".目前市场上有众多的介绍OS的书和**,但好象都没有介绍或给出任何划分"任务"的基本原则和方法.当然,在实际应用中可能会根据不同的应用有变化,但我也感觉有一个基本可作为分析和考虑的划分原则.

我曾经让我的研究生去探讨这2个题目,但他们都不感兴趣.另外一个(我个人的观点)原因是:研究OS的大都从软件的角度考虑问题.

LZ的问题提出一个课题,如何找到一个能适合8位系统的,界于目前编写系统软件的方式与采用0S之间的一种系统设计方法.能具有OS的基本优点并保留中断响应实时性好的特点. "时间触发嵌入式"是一种可尝试的方法,但好象有缺陷.

我也希望在这方面有经验和研究的提出自己的看法,大家一起讨论.

使用特权

评论回复
85
zq1987731| | 2011-2-13 20:48 | 只看该作者
To 刘前辈
打工和研究确实不同,前者就好比现在的“工程师”,只是在不断应用,做些边角料的事情。
现在很多大公司做项目,根本就是按模块评审多个有实力的厂家让他们的方案互相竞争,价格性价比等等都进行评估,得出最优选择,厂家势必会派技术支持上门,那么工程师的价值更进一步被贬低。这样培养出来的工程师,3年5年经验又能掌握多少?!其实很多人仅仅“职位”是工程师,便当自己是工程师了。

To china_fog
隐藏的大牛果然很多,这就蹦出来一个...事实上如果不是我及时跳进去和稀泥,马上就会有说“做汇编的神,做C的是人”的人出现,曾经有过的类似帖子中便是如此,我不过是及时堵住他们的嘴而已,看来效果还不错。
您这种程度的人还真别进来瞎掺合了,低调的几句话已经暴露了身价,这边能超越的人不过凤毛菱角。我现在虽然只有10几K,但受主观因素约束过多,父母是没文化的下岗退休工人,家里一贫如洗,没有任何后台背景,好在87年的人,还能拼上好长段时间,300K也只是必然的过程而已,我的目标可不限于此,呵呵~~~

使用特权

评论回复
86
xwj| | 2011-2-13 21:01 | 只看该作者
太长,还没看滴路过。。。

使用特权

评论回复
87
lovexj0921| | 2011-2-13 21:25 | 只看该作者
顶起,:handshake,支持楼主,汇编太难啃了,但我也打算拿下它。

使用特权

评论回复
88
quanzou| | 2011-2-13 22:33 | 只看该作者
发个调查贴大家来投票好了,弄几个选项。反正我是两个都不打算绕过去...

使用特权

评论回复
89
desmond| | 2011-2-14 00:47 | 只看该作者
学校的教材老,老师也老。很多地方的课程只教汇编。

使用特权

评论回复
90
ZRL700424| | 2011-2-14 08:06 | 只看该作者
本帖最后由 ZRL700424 于 2011-2-14 08:19 编辑

汇编、C只个语言工具而已,某些人怎么就不明白呢?

假如有个人会汇编,会C,会B,甚至连将来有可能出现的D都会,给你去打工,你会出多少钱/月?如果你是老板,你肯定回答不了,你会进一步问能不能做出让你赚钱的产品!
如果什么产品都做不出来或者做出来总是不稳定做100套退101套(样板也退回来了),相信只要你管饭你都不会要。

实际上老板们根本不管你用什么编程语言,只要你能做出让他能赚钱的产品,他就会给你高薪!

使用特权

评论回复
91
ZRL700424| | 2011-2-14 09:09 | 只看该作者
另外,能不能拿高薪跟技术水平高低都不一定有关系,更别说跟会不会C有关系了。

使用特权

评论回复
92
xvbct| | 2011-2-14 09:57 | 只看该作者
用啥语言是与老板的要求分不开的。我现在都是写的双版本啊。同志们,我硬着头皮把一个CPU程序的6000多行汇编代码翻译成C了。我们老板会写汇编和VB。厂家提供的某芯片的驱动代码只有C。我程序写出来了,又要我再写一份汇编的代码。全是16位地址的寄存器地址运算,涉及到惩处,你想想我郁闷不。写程序,特别是写汇编的人,一定要有详尽的注释,我翻译的汇编,他就几乎没有任何注释。而且变量命名中英文夹杂。要我的老命。我觉得熟悉了汇编有一个好处,对硬件的理解更加深刻。能真正明白硬件是怎么工作的。而且在来回的对比中,你会知道怎么用C写出更加有效率的程序。用汇编的缺点就是可读性不强,里面的错误不容易查找出来。用C的话,怎样写更有效率很重要。总体来说,汇编必须懂,开发的话,尽量还是用C吧。方便后来人。用汇编保密性要好一一点。

使用特权

评论回复
93
hllyh| | 2011-2-14 10:57 | 只看该作者
编程序还是用C好,编程效率高,调试方便,优化编译后执行效率也很高。懂汇编好处有很多,但是最好不要只用汇编写程序,这样比较累。我一般都是先用C写全部程序,如果优化编译后执行效率还达不到要求,再考虑将其中关键程序改成汇编。C编译程序是比较复杂的程序,有BUG是必然的,微软的VC、TI DSP的C6000都有不少BUG,这时候只好用汇编。

使用特权

评论回复
94
tuzheng| | 2011-2-14 15:27 | 只看该作者
恭喜楼主! 我和你正好相反, 我现在感觉不怕C了!:lol

使用特权

评论回复
95
hahawoo| | 2011-2-14 21:09 | 只看该作者
汇编是基础,特别是嵌入式开发,以此类推,从事技术基础工作的都值得我们尊敬。曾经听一位军工老专家讲过,我们从老毛子那里进口过来的某大型驱逐舰上,其核心程序仅仅几百KB,却形成强大战斗力,可靠性和速度不是一般想像,试想用C去实现得多难啊。相比我们那些华丽呼哨的东西,老毛子做的东西显得简单实用。我们现在做技术工作的工程师不少,好多浮躁得很,会点东西就感觉自己是能人,能挣10K就感觉很牛,实在有点看不下去!

使用特权

评论回复
96
cghlsy| | 2011-2-14 22:32 | 只看该作者
14楼说得好。另一方面,对于初学者,汇编有利于熟悉CPU结构。

使用特权

评论回复
97
zq1987731| | 2011-2-15 09:13 | 只看该作者
汇编是基础,特别是嵌入式开发,以此类推,从事技术基础工作的都值得我们尊敬。曾经听一位军工老专家讲过,我们从老毛子那里进口过来的某大型驱逐舰上,其核心程序仅仅几百KB,却形成强大战斗力,可靠性和速度不是一 ...
hahawoo 发表于 2011-2-14 21:09


To hahawoo
您考虑问题明显欠妥:
老毛子驱逐舰上的程序,“听说”几百K,那只能说明——
1,他们用的是什么核心,不知道!
2,几百K是指的是什么?八成就是程序本身的.bin,要知道编译链接后的C和汇编最终都是二进制从外观是根本无法区分!又或者...那段源码您看过了?呵呵..
3,他们有没有使用OS,不知道!
4,以驱逐舰级别分析,舰身上只用“一个”单片机装了几百K程序统揽由导弹发射仪表操作各类杂事的概率,您认为有几成?!

综上,在军工级项目中,用纯汇编写几百K程序,然后统管战舰的一切,您认为这概率只有几成?科学工作者对各类“听说”如果都不能抱着怀疑的态度,那必然就是“人云亦云”的类型!
另外可靠性和速度,是语言决定的么?说到底只是工具,无奈人的精力有限,并且还要充分考虑可移植性,语言是为人服务的,规模在8K以下的汇编时间差异性还不是很大,但以上呢?

您八成认为我不会汇编吧?呵呵...曾经写过个60K的矩阵切换程序(不计Const区),纯“51汇编”,闲得蛋疼还在10多路485上同时玩CSMA/CD,整体最难的部分不是Coding而是规划!
试问一下——
1,给每个寄存器都equ一下,然后都取个名字,全局变量满天飞
2,到处都是无规则的LJMP
3,注释稀少
4,中断中处理大量事物
5,有出现100周期以上CPU空转(Delay)
等等的这些劣迹,有多少自认为“汇编高手”的人具备?又或者,高级语言中“域”,“段”等概念,在汇编中是否可以扔掉?这个问题都回答不了的人,你们也就以“写了几十张纸的汇编,一看就是高手”的评论沾沾自喜吧。

“试想用C去实现得多难啊”——典型的本末倒置,Linux的kernel去掉些不必要的部分编译出来也就几百K的Image,建议抽空去阅读下其源码再好好思考一下“几百K”到底是个什么规模!

使用特权

评论回复
98
http2008| | 2011-2-15 11:09 | 只看该作者
学习了

使用特权

评论回复
99
雪山飞狐D| | 2011-2-15 16:04 | 只看该作者
这年头赚钱才是王道,搞JAVA的月薪2W多的去了,所谓的汇编“高手”有几个达到?
向高薪的同志学习;P

使用特权

评论回复
100
雪山飞狐D| | 2011-2-15 16:05 | 只看该作者
这年头赚钱才是王道,搞JAVA的月薪2W多的去了,所谓的汇编“高手”有几个达到?
向高薪的同志学习;P

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则