学了汇编能干啥?
高级语言都学不过来了,各种框架啥的,这年头还有人学汇编语言么?
为何学它?
亲们,给偶个学汇编的理由吧:)
1
way2exluren 2015-02-03 08:24:20 +08:00 via Android
写c程序,有时候要内嵌汇编。恶意代码分析的时候要反汇编看汇编代码。还是c有时候bug不好找,会看生成的汇编代码
|
2
codegear 2015-02-03 08:26:47 +08:00 via Android
逆向工程不得不看汇编
|
3
bluecubic 2015-02-03 08:28:52 +08:00 via iPhone
年代久远的嵌入式设备
|
5
Panic 2015-02-03 08:37:36 +08:00
https://www.google.co.jp/search?q=site:v2ex.com/t+%E5%B5%8C%E5%85%A5%E5%BC%8F&qscrl=1&gws_rd=cr,ssl&ei=vhfQVMXlOIjf8AW6toGwCg
上面的至少 30% 需要汇编把。不过现在汇编应该主要作为一种工具吧, 不到万不得已不会有谁想用的。 |
6
booboo 2015-02-03 08:37:40 +08:00
图像算法优化的时候也是需要汇编的。
|
7
sbboy 2015-02-03 08:38:15 +08:00
我有一朋友学汇编是为了泡妞
|
10
exch4nge 2015-02-03 08:49:26 +08:00
学校学的8位还是16位汇编,学完了搞搞历史悠久的硬件还是可以的,也有助于理解计算机怎么运行的。
工作上能用到的汇编,除了某些搞硬件的接触(现在大部分都是高级语言了)外,像楼上说的搞逆向工程,病毒分析,漏洞挖掘,还有想把某些代码变高效用内嵌汇编,Debug时看汇编,搞内核方面也用到汇编等等。 如果对底层没兴趣,也不会在这方面研究或就职,那就不用看了。 现在各种语言与框架确实很多,但有些经典的语言或框架,你学会了之后即使以后不用,也对你有很大的帮助,多学学无害处。 |
11
exch4nge 2015-02-03 08:51:07 +08:00
哦,貌似一些3D渲染中使用的 高级shader 也是用汇编写的。
|
12
zgxltxz 2015-02-03 08:57:08 +08:00 via Android
在学
|
13
ruchee 2015-02-03 09:02:38 +08:00
在复习中,为的是看懂C/OC的调试信息
|
14
zjgood 2015-02-03 09:05:15 +08:00 via Android
加密解密要用到。去看雪看看吧
|
15
tabris17 2015-02-03 09:07:47 +08:00
反编译、crack、调试都需要用到
|
16
Claud 2015-02-03 09:10:35 +08:00
每天都要看汇编的人默默飘过……
|
17
1023400273 2015-02-03 09:14:48 +08:00
@sbboy 求指导,学汇编如何泡妞
|
18
wizardoz 2015-02-03 09:19:16 +08:00
我说学着玩可以吗?其实个人感觉从理念上汇编和C没有太多区别,只不过要自己处理函数栈。
|
19
qq446015875 2015-02-03 09:19:24 +08:00 via Android
逆向工程少不了汇编的,还有对时间要求很高的场合,我记得好像dsp就得用汇编吧
|
20
kisshere 2015-02-03 09:24:00 +08:00 via Android
用电话01键写代码的飘过
|
22
onemoo 2015-02-03 09:38:01 +08:00
即便不搞硬件、不搞嵌入式、不写汇编,但在debug C/C++时还是会用到的。
|
23
akin520 2015-02-03 09:38:47 +08:00
必须有呀
|
24
bugeye 2015-02-03 09:52:02 +08:00
C语言=宏汇编,C语言想学得好,汇编是基础。
当年MFC那屎一样的框架把我逼得去用汇编写win32 GUI。 |
26
ryd994 2015-02-03 10:06:57 +08:00
其实说高性能用汇编也是弊大于利,维护太麻烦了,坑太多。这年头编译器优化太厉害了。
玩单片机,以前老觉得用汇编可以用一些自己trick,性能会好很多。最近转用C重写,然后看反编译发现和我手动写差不了多少,甚至有些地方的优化我自己都没想到,只能说编译器太牛了。 但是学一下我还是觉得有好处的,对底层的理解好很多。 |
27
solome 2015-02-03 10:08:46 +08:00
看《瘋狂的程序員》的時候特別想重新拾起之前學習的匯編,最後沒動力堅持下去哈。。。
|
28
soundofu 2015-02-03 10:11:51 +08:00
当然需要,基本做嵌入式开发的,写C的,搞深入一点都会要学汇编,很多算法和性能优化时候必须要上汇编。
|
30
fnmsd 2015-02-03 10:17:21 +08:00
逆向工程啊~~破解软件啊~
|
31
wdlth 2015-02-03 10:23:38 +08:00
我搞嵌入式是要学的……
|
32
Neveroldmilk 2015-02-03 11:08:07 +08:00
不要说逆向工程了,有些时候发现程序bug,还是要看寄存器和汇编指令的。
|
33
lsmgeb89 2015-02-03 11:09:21 +08:00
汇编有时候还是需要的,也打算学下。
|
34
special 2015-02-03 11:24:10 +08:00
学校必修课,要考试。
|
35
laomutuo OP @Neveroldmilk 大神能告诉我i3有几个寄存器么:)
|
38
duanyu47 2015-02-03 11:38:25 +08:00
不学汇编怎么搞破解。。
|
40
booboo 2015-02-03 11:57:57 +08:00
图像处理算法热点的地方有时候会反汇编后基于汇编做优化。
|
41
sbboy 2015-02-03 11:59:45 +08:00
@1023400273 具体我也不了解啊。。。就是有个妹子会汇编,我的朋友想和她有点共同语言。。。
|
44
nullizer 2015-02-03 12:05:27 +08:00
一般人学了汇编虽然不容易用上,很容易就忘记细节。但是CS学生不学心里不会踏实的,学了之后至少心里有底,对整个编程生涯都有好处
|
47
DingSoung 2015-02-03 12:19:21 +08:00
有啊,现在工作经常写汇编
|
51
caomaocao 2015-02-03 12:37:04 +08:00
如果搞嵌入式底层,还是需要的。
|
52
726332269 2015-02-03 12:52:47 +08:00
用来做系统开发,很好玩的,汇编应该算是最有趣的语言。
|
53
Bairrfhoinn 2015-02-03 13:47:20 +08:00
貌似汇编语言编写各种硬件的驱动程序也用的不少,什么显卡驱动、声卡驱动、网卡驱动等,都会或多或少用到这门语言……
|
54
jedihy 2015-02-03 13:48:55 +08:00
尼玛,调试程序不懂汇编调试个蛋?不懂汇编计算机怎么工作的知道个蛋?不懂汇编优化个蛋?不懂汇编的编程,花式码字而已。
可惜我也只会花式码字。。。 |
55
dagger 2015-02-03 13:49:09 +08:00
即便是不带操作系统的嵌入式,用到汇编的地方也很少了,现在我基本只在bootloader的引导部分和内核里一些需要稍微hack一下的地方才会看到汇编,而且很多指令在内核代码里都会被简单包装成一个c api再拿去用的
汇编对开发和维护都是噩梦,在现在这个时代还想成气候几乎不可能 |
60
txlty 2015-02-03 14:19:00 +08:00
如果没人学汇编,那么每年那么多 操作系统 和 编程语言 的漏洞,是谁爆出来的?一群老头子?
|
63
liukun 2015-02-03 14:34:59 +08:00
没有汇编,难道你的CPU认识Java,Python,PHP?所谓编译-汇编-链接,没有人学汇编语言,码农们还怎么玩?
|
64
publicID123 2015-02-03 15:03:18 +08:00
码农:对汇编一窍不通。只能写脚本级代码。属于行业苦力。
工程师:能看懂汇编,用于软件调试,维护,性能优化。 科学家:精通汇编。用于编写操作系统、发明编程语言。 码农当然是不学的。大部分人也没学过,毕竟苦力是大多数。 |
65
ioth 2015-02-03 15:17:53 +08:00
91年考高程,asm是必须,不知道现在怎么样了。
|
66
easing 2015-02-03 15:20:07 +08:00
没想到能扯的人还不少。。。上面说的有几个在这个月碰过汇编?都在说别人,是的,搞逆向搞安全的需要,但你自己需要搞么,是的,搞图形的需要,但现在carmack都不在汇编层优化了,你在搞?搞嵌入式的,我说lz根本不在这一行吧?而且在现在安卓一统天下的时候要学的也不是x86而是smali啊。对于国内80%都在做应用层的码农,搞啥子汇编啊。
当然汇编还是需要学的,了解计算机在对程序员提供的最基本抽象层有时候是很有帮助的。最好自己实现一个X86的或者一个基于栈的简单虚拟机,都不会超过500行,但我觉得也就仅此而已了。 |
67
youyang 2015-02-03 15:20:34 +08:00
一年前搞crack研究过。
|
68
acros 2015-02-03 15:22:02 +08:00 via iPhone
这东西和算法一样,平时上班可能没啥用,关键时刻就能甩别人十条街。
|
69
llb123 2015-02-03 15:27:10 +08:00 via Android
信号与系统要学貌似
|
70
POP 2015-02-03 15:28:43 +08:00
学汇编,有妞泡?求介绍!
|
71
acros 2015-02-03 15:31:39 +08:00
看这个:
|
72
acros 2015-02-03 15:32:16 +08:00
|
73
LovingYoung 2015-02-03 15:39:05 +08:00
上学期刚考完.
|
75
andy1987 2015-02-03 16:26:57 +08:00
有,某些行业离不开汇编,不过现在学的更多的都是win32汇编了,以前at&t,8086的汇编应该学的人相对少了
|
76
andy1987 2015-02-03 16:28:17 +08:00
学汇编的理由其实很简单,如果你向更深入的了解别人的程序
像一些做安全软件的底层分析员,汇编都是必备的还有那些一天到晚面对调试器的童鞋们 |
78
laomutuo OP |
79
commyleung 2015-02-03 16:39:57 +08:00
有时候我很羡慕程序,可以把自己的IDEA做出来。
|
80
laomutuo OP @commyleung idea写java的,和汇编有关系?
|
82
pheyer 2015-02-03 16:43:07 +08:00
@commyleung 就是这样啊,我本来不会做游戏的,可是有idea一直在我的脑海里萦绕,然后就自学游戏开发把游戏做出来了,当然是小游戏了
|
83
xieyudi1990 2015-02-03 16:46:57 +08:00
大学期间学的汇编:
8051 HCS12 x86 ARMv7 PIC18 MIPS32 |
85
xieyudi1990 2015-02-03 16:48:44 +08:00
@dingsoung 为什么要是51呢? MIPS岂不更简单?
|
86
ybh37 2015-02-03 16:49:43 +08:00
crack、某些驱动需要啃汇编代码。
不装了,真的不会写,只能看懂简单的,知道怎么改。 |
88
txlty 2015-02-03 16:57:26 +08:00
|
89
soundofu 2015-02-03 17:01:13 +08:00
@laomutuo 刚才我说的意思是"白色家电", 价格竞争非常激烈, 由于出货量都是kk级别的, 所以对成本非常在意. 所以靠着量大,甚至可以把51阉割掉一些功能等定制, 以追求0.x元的成本下降.
|
90
laomutuo OP @xieyudi1990 mips很复杂的,好伐:) sun不是有服务器cpu用mips做的么?
|
92
leavic 2015-02-03 17:57:13 +08:00
做底层不学汇编就是渣
|
93
xieyudi1990 2015-02-03 18:03:31 +08:00
@laomutuo 指令集, 执行单元, 比51要简单啊. 当然如果你是用别人的IP核那就无所谓了.
|
94
Artotria 2015-02-03 18:43:41 +08:00
周经帖
|
95
chiu 2015-02-03 18:55:07 +08:00
因为......考试要考
|
96
Neveroldmilk 2015-02-03 19:12:03 +08:00
Intel有专门的白皮书介绍每款型号CPU的寄存器和指令集详细支持情况的,不是做底层指令优化的额很多高级指令集和寄存器都用不到,但是可以用来参考。http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html
|
97
laomutuo OP |
98
chineselittleboy 2015-02-03 20:38:20 +08:00
@kisshere 大神你是做什么的~~
|
100
xieyudi1990 2015-02-03 21:25:25 +08:00
@laomutuo 51本来是35年前为多周期-微码的CISC设计的. 现在只是为了软件兼容性 (一帮人只会51怎么办? 手里只有51的binary怎么办?) 而被ATMega或STC改成了流水线执行.
RISC指令少而且划分得很规则, 能够很好得适应流水线执行. 近些年新上的嵌入式架构基本都是RISC的. 你可以把8051的复杂度, 和MIPS或者Cortex-M0之类的复杂度做对比. 这个, 和能不能跑Linux没有关系. PIC32就是基于MIPS的单片机. |