• 请不要在回答技术问题时复制粘贴 AI 生成的内容
laomutuo
V2EX  ›  程序员

现在还有人学汇编么?

  •  
  •   laomutuo · Feb 3, 2015 · 21611 views
    This topic created in 4294 days ago, the information mentioned may be changed or developed.

    学了汇编能干啥?
    高级语言都学不过来了,各种框架啥的,这年头还有人学汇编语言么?
    为何学它?

    亲们,给偶个学汇编的理由吧:)

    131 replies  •  2015-03-18 10:52:22 +08:00
    1  2  
    ❮ ❯
    way2exluren
    way2exluren
    Feb 3, 2015 via Android
    1
    写c程序,有时候要内嵌汇编。恶意代码分析的时候要反汇编看汇编代码。还是c有时候bug不好找,会看生成的汇编代码
    codegear
    codegear
    Feb 3, 2015 via Android
    2
    逆向工程不得不看汇编
    bluecubic
    bluecubic
    Feb 3, 2015 via iPhone
    3
    年代久远的嵌入式设备
    laomutuo
    laomutuo
    OP
    Feb 3, 2015
    4
    @codegear 搞逆向的人很少吧?
    Panic
    Panic
    Feb 3, 2015
    5
    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% 需要汇编把。不过现在汇编应该主要作为一种工具吧, 不到万不得已不会有谁想用的。
    booboo
    booboo
    Feb 3, 2015
    6
    图像算法优化的时候也是需要汇编的。
    sbboy
    sbboy
    Feb 3, 2015
    7
    我有一朋友学汇编是为了泡妞
    laomutuo
    laomutuo
    OP
    Feb 3, 2015
    8
    @sbboy 求妞照片:)
    laomutuo
    laomutuo
    OP
    Feb 3, 2015❤️1
    9
    @booboo 用它干啥?
    exch4nge
    exch4nge
    Feb 3, 2015
    10
    学校学的8位还是16位汇编,学完了搞搞历史悠久的硬件还是可以的,也有助于理解计算机怎么运行的。

    工作上能用到的汇编,除了某些搞硬件的接触(现在大部分都是高级语言了)外,像楼上说的搞逆向工程,病毒分析,漏洞挖掘,还有想把某些代码变高效用内嵌汇编,Debug时看汇编,搞内核方面也用到汇编等等。

    如果对底层没兴趣,也不会在这方面研究或就职,那就不用看了。

    现在各种语言与框架确实很多,但有些经典的语言或框架,你学会了之后即使以后不用,也对你有很大的帮助,多学学无害处。
    exch4nge
    exch4nge
    Feb 3, 2015
    11
    哦,貌似一些3D渲染中使用的 高级shader 也是用汇编写的。
    zgxltxz
    zgxltxz
    Feb 3, 2015 via Android
    12
    在学
    ruchee
    ruchee
    Feb 3, 2015
    13
    在复习中,为的是看懂C/OC的调试信息
    zjgood
    zjgood
    Feb 3, 2015 via Android
    14
    加密解密要用到。去看雪看看吧
    tabris17
    tabris17
    Feb 3, 2015
    15
    反编译、crack、调试都需要用到
    Claud
    Claud
    Feb 3, 2015
    16
    每天都要看汇编的人默默飘过……
    1023400273
    1023400273
    Feb 3, 2015
    17
    @sbboy 求指导,学汇编如何泡妞
    wizardoz
    wizardoz
    Feb 3, 2015
    18
    我说学着玩可以吗?其实个人感觉从理念上汇编和C没有太多区别,只不过要自己处理函数栈。
    qq446015875
    qq446015875
    Feb 3, 2015 via Android
    19
    逆向工程少不了汇编的,还有对时间要求很高的场合,我记得好像dsp就得用汇编吧
    kisshere
    kisshere
    Feb 3, 2015 via Android
    20
    用电话01键写代码的飘过
    Loop680
    Loop680
    Feb 3, 2015
    21
    @kisshere 用钢针戳光盘刻代码的笑而不语。
    onemoo
    onemoo
    Feb 3, 2015
    22
    即便不搞硬件、不搞嵌入式、不写汇编,但在debug C/C++时还是会用到的。
    akin520
    akin520
    Feb 3, 2015
    23
    必须有呀
    bugeye
    bugeye
    Feb 3, 2015
    24
    C语言=宏汇编,C语言想学得好,汇编是基础。

    当年MFC那屎一样的框架把我逼得去用汇编写win32 GUI。
    ChiChou
    ChiChou
    Feb 3, 2015
    25
    @laomutuo 做二进制安全搞逆向的人多了去了
    ryd994
    ryd994
    Feb 3, 2015
    26
    其实说高性能用汇编也是弊大于利,维护太麻烦了,坑太多。这年头编译器优化太厉害了。
    玩单片机,以前老觉得用汇编可以用一些自己trick,性能会好很多。最近转用C重写,然后看反编译发现和我手动写差不了多少,甚至有些地方的优化我自己都没想到,只能说编译器太牛了。

    但是学一下我还是觉得有好处的,对底层的理解好很多。
    solome
    solome
    Feb 3, 2015
    27
    看《瘋狂的程序員》的時候特別想重新拾起之前學習的匯編,最後沒動力堅持下去哈。。。
    soundofu
    soundofu
    Feb 3, 2015
    28
    当然需要,基本做嵌入式开发的,写C的,搞深入一点都会要学汇编,很多算法和性能优化时候必须要上汇编。
    crab
    crab
    Feb 3, 2015
    29
    @solome 作者都蹲进去了。
    fnmsd
    fnmsd
    Feb 3, 2015
    30
    逆向工程啊~~破解软件啊~
    wdlth
    wdlth
    Feb 3, 2015
    31
    我搞嵌入式是要学的……
    Neveroldmilk
    Neveroldmilk
    Feb 3, 2015
    32
    不要说逆向工程了,有些时候发现程序bug,还是要看寄存器和汇编指令的。
    lsmgeb89
    lsmgeb89
    Feb 3, 2015
    33
    汇编有时候还是需要的,也打算学下。
    special
    special
    Feb 3, 2015
    34
    学校必修课,要考试。
    laomutuo
    laomutuo
    OP
    Feb 3, 2015
    35
    @Neveroldmilk 大神能告诉我i3有几个寄存器么:)
    laomutuo
    laomutuo
    OP
    Feb 3, 2015
    36
    @crab 学汇编,蹲进去啥意思?敲代码还要看姿势?
    laomutuo
    laomutuo
    OP
    Feb 3, 2015
    37
    @ryd994 你用汇编写过的程序有多少行的?
    duanyu47
    duanyu47
    Feb 3, 2015
    38
    不学汇编怎么搞破解。。
    pheyer
    pheyer
    Feb 3, 2015
    39
    @codegear 逆向工程+1
    booboo
    booboo
    Feb 3, 2015
    40
    图像处理算法热点的地方有时候会反汇编后基于汇编做优化。
    sbboy
    sbboy
    Feb 3, 2015
    41
    @1023400273 具体我也不了解啊。。。就是有个妹子会汇编,我的朋友想和她有点共同语言。。。
    sbboy
    sbboy
    Feb 3, 2015
    42
    @laomutuo 我也没见过,只是听朋友说起过。。。
    codegear
    codegear
    Feb 3, 2015
    43
    @laomutuo 我周围确实没见到做逆向工程的……

    @pheyer 哈哈,现在做逆向的人好少
    nullizer
    nullizer
    Feb 3, 2015
    44
    一般人学了汇编虽然不容易用上,很容易就忘记细节。但是CS学生不学心里不会踏实的,学了之后至少心里有底,对整个编程生涯都有好处
    laomutuo
    laomutuo
    OP
    Feb 3, 2015
    45
    @booboo 先用c实现,生成汇编,然后改汇编代码么?
    laomutuo
    laomutuo
    OP
    Feb 3, 2015
    46
    @pheyer 做逆向,就是搞破解么?从小白变成破解大神,要学多久?
    DingSoung
    DingSoung
    Feb 3, 2015
    47
    有啊,现在工作经常写汇编
    laomutuo
    laomutuo
    OP
    Feb 3, 2015
    48
    @dingsoung 知道i3有几个寄存器么?你都学过哪些指令呢?
    pheyer
    pheyer
    Feb 3, 2015
    49
    @laomutuo 不一定是搞破解啊,有时候就是想偷别人的一点东西,哈哈
    DingSoung
    DingSoung
    Feb 3, 2015
    50
    @laomutuo 不是X86汇编,是FPGA模拟CPU核的汇编
    caomaocao
    caomaocao
    Feb 3, 2015
    51
    如果搞嵌入式底层,还是需要的。
    rlexs
    rlexs
    Feb 3, 2015
    52
    用来做系统开发,很好玩的,汇编应该算是最有趣的语言。
    Bairrfhoinn
    Bairrfhoinn
    Feb 3, 2015
    53
    貌似汇编语言编写各种硬件的驱动程序也用的不少,什么显卡驱动、声卡驱动、网卡驱动等,都会或多或少用到这门语言……
    jedihy
    jedihy
    Feb 3, 2015
    54
    尼玛,调试程序不懂汇编调试个蛋?不懂汇编计算机怎么工作的知道个蛋?不懂汇编优化个蛋?不懂汇编的编程,花式码字而已。
    可惜我也只会花式码字。。。
    dagger
    dagger
    Feb 3, 2015
    55
    即便是不带操作系统的嵌入式,用到汇编的地方也很少了,现在我基本只在bootloader的引导部分和内核里一些需要稍微hack一下的地方才会看到汇编,而且很多指令在内核代码里都会被简单包装成一个c api再拿去用的
    汇编对开发和维护都是噩梦,在现在这个时代还想成气候几乎不可能
    laomutuo
    laomutuo
    OP
    Feb 3, 2015
    56
    @pheyer 哈哈,用汇编还能偷东西?你是黑客?
    laomutuo
    laomutuo
    OP
    Feb 3, 2015
    57
    @dingsoung 你是硬件工程师?
    模拟的是什么cpu?
    DingSoung
    DingSoung
    Feb 3, 2015
    58
    @laomutuo 我只是个写软件的小码农.
    阉割版的51核,做了很多客制化
    scusjs
    scusjs
    Feb 3, 2015
    59
    @laomutuo 巨汗。。。偷代码、接口啥的啊
    txlty
    txlty
    Feb 3, 2015
    60
    如果没人学汇编,那么每年那么多 操作系统 和 编程语言 的漏洞,是谁爆出来的?一群老头子?
    soundofu
    soundofu
    Feb 3, 2015
    61
    @dingsoung 朋友做白电的么?阉割的51做客制化似乎要很大的出货量支持啊!
    DingSoung
    DingSoung
    Feb 3, 2015
    62
    @soundofu 做烧录器的
    liukun
    liukun
    Feb 3, 2015
    63
    没有汇编,难道你的CPU认识Java,Python,PHP?所谓编译-汇编-链接,没有人学汇编语言,码农们还怎么玩?
    publicID123
    publicID123
    Feb 3, 2015
    64
    码农:对汇编一窍不通。只能写脚本级代码。属于行业苦力。
    工程师:能看懂汇编,用于软件调试,维护,性能优化。
    科学家:精通汇编。用于编写操作系统、发明编程语言。
    码农当然是不学的。大部分人也没学过,毕竟苦力是大多数。
    ioth
    ioth
    Feb 3, 2015
    65
    91年考高程,asm是必须,不知道现在怎么样了。
    easing
    easing
    Feb 3, 2015
    66
    没想到能扯的人还不少。。。上面说的有几个在这个月碰过汇编?都在说别人,是的,搞逆向搞安全的需要,但你自己需要搞么,是的,搞图形的需要,但现在carmack都不在汇编层优化了,你在搞?搞嵌入式的,我说lz根本不在这一行吧?而且在现在安卓一统天下的时候要学的也不是x86而是smali啊。对于国内80%都在做应用层的码农,搞啥子汇编啊。
    当然汇编还是需要学的,了解计算机在对程序员提供的最基本抽象层有时候是很有帮助的。最好自己实现一个X86的或者一个基于栈的简单虚拟机,都不会超过500行,但我觉得也就仅此而已了。
    youyang
    youyang
    Feb 3, 2015
    67
    一年前搞crack研究过。
    acros
    acros
    Feb 3, 2015 via iPhone
    68
    这东西和算法一样,平时上班可能没啥用,关键时刻就能甩别人十条街。
    llb123
    llb123
    Feb 3, 2015 via Android
    69
    信号与系统要学貌似
    POP
    POP
    Feb 3, 2015
    70
    学汇编,有妞泡?求介绍!
    acros
    acros
    Feb 3, 2015
    71
    看这个:
    acros
    acros
    Feb 3, 2015
    72
    http://blog.codingnow.com/2014/11/rla_format.html#comments
    多一项技能,多了一个解决方案的能力。
    我汇编不行,看到那部分就卡住了···
    LovingYoung
    LovingYoung
    Feb 3, 2015
    73
    上学期刚考完.
    pheyer
    pheyer
    Feb 3, 2015
    74
    @laomutuo 我偷别人的算法,思路行不?
    andy1987
    andy1987
    Feb 3, 2015
    75
    有,某些行业离不开汇编,不过现在学的更多的都是win32汇编了,以前at&t,8086的汇编应该学的人相对少了
    andy1987
    andy1987
    Feb 3, 2015
    76
    学汇编的理由其实很简单,如果你向更深入的了解别人的程序
    像一些做安全软件的底层分析员,汇编都是必备的还有那些一天到晚面对调试器的童鞋们
    laomutuo
    laomutuo
    OP
    Feb 3, 2015
    77
    @dingsoung 51单片机么?为何要用fpga模拟呢?直接买个51不行?
    51这么弱的处理器不能叫cpu吧?
    laomutuo
    laomutuo
    OP
    Feb 3, 2015
    78
    @soundofu 白电是啥?为何要把51阉割了?
    @txlty 操作系统漏洞和汇编有啥关系?把操作系统反编译成汇编,一行行读,发现漏洞?
    @publicID123 据我所知操作系统都是用C写的,你说的汇编貌似很少啊,科学家才不用汇编呢,码农用:(科学家用C写10行代码,码农要用汇编写一天呢:)
    @ioth 你现在还用汇编么?
    @youyang 你要crack什么软件?
    @pheyer 给你个windows,你看汇编,能知道windows是怎么实现的么?
    @andy1987 这三种汇编,都要学一遍么?
    commyleung
    commyleung
    Feb 3, 2015
    79
    有时候我很羡慕程序,可以把自己的IDEA做出来。
    laomutuo
    laomutuo
    OP
    Feb 3, 2015
    80
    @commyleung idea写java的,和汇编有关系?
    pheyer
    pheyer
    Feb 3, 2015
    81
    @laomutuo 你这厮明显就是把问题极端化了,我吃饱了撑的去研究windows怎么实现的?够用就行
    pheyer
    pheyer
    Feb 3, 2015
    82
    @commyleung 就是这样啊,我本来不会做游戏的,可是有idea一直在我的脑海里萦绕,然后就自学游戏开发把游戏做出来了,当然是小游戏了
    xieyudi1990
    xieyudi1990
    Feb 3, 2015
    83
    大学期间学的汇编:
    8051 HCS12 x86 ARMv7 PIC18 MIPS32
    laomutuo
    laomutuo
    OP
    Feb 3, 2015
    84
    @pheyer 游戏在哪里?偶瞧下:)
    xieyudi1990
    xieyudi1990
    Feb 3, 2015
    85
    @dingsoung 为什么要是51呢? MIPS岂不更简单?
    ybh37
    ybh37
    Feb 3, 2015
    86
    crack、某些驱动需要啃汇编代码。
    不装了,真的不会写,只能看懂简单的,知道怎么改。
    pheyer
    pheyer
    Feb 3, 2015
    87
    @laomutuo 暂时保密哈哈
    soundofu
    soundofu
    Feb 3, 2015
    89
    @laomutuo 刚才我说的意思是"白色家电", 价格竞争非常激烈, 由于出货量都是kk级别的, 所以对成本非常在意. 所以靠着量大,甚至可以把51阉割掉一些功能等定制, 以追求0.x元的成本下降.
    laomutuo
    laomutuo
    OP
    Feb 3, 2015
    90
    @xieyudi1990 mips很复杂的,好伐:) sun不是有服务器cpu用mips做的么?
    DingSoung
    DingSoung
    Feb 3, 2015
    91
    @laomutuo 不是为了模拟而模拟,是为了控制收发数据,编写协议,自定义接口,而且现有的MCU速度太.
    leavic
    leavic
    Feb 3, 2015
    92
    做底层不学汇编就是渣
    xieyudi1990
    xieyudi1990
    Feb 3, 2015
    93
    @laomutuo 指令集, 执行单元, 比51要简单啊. 当然如果你是用别人的IP核那就无所谓了.
    shyrz
    shyrz
    Feb 3, 2015
    94
    周经帖
    chiu
    chiu
    Feb 3, 2015
    95
    因为......考试要考
    Neveroldmilk
    Neveroldmilk
    Feb 3, 2015
    96
    Intel有专门的白皮书介绍每款型号CPU的寄存器和指令集详细支持情况的,不是做底层指令优化的额很多高级指令集和寄存器都用不到,但是可以用来参考。http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html
    laomutuo
    laomutuo
    OP
    Feb 3, 2015
    97
    @xieyudi1990 为何简单执行速度却比51的快很多呢?
    51好像不能跑linux吧?貌似连操作系统都跑不了:(
    可是简单的MIPS为何可以跑Solaris, Linux呢?
    chineselittleboy
    chineselittleboy
    Feb 3, 2015
    98
    @kisshere 大神你是做什么的~~
    wezzard
    wezzard
    Feb 3, 2015
    99
    @ioth 看成91年高考了……
    xieyudi1990
    xieyudi1990
    Feb 3, 2015
    100
    @laomutuo 51本来是35年前为多周期-微码的CISC设计的. 现在只是为了软件兼容性 (一帮人只会51怎么办? 手里只有51的binary怎么办?) 而被ATMega或STC改成了流水线执行.
    RISC指令少而且划分得很规则, 能够很好得适应流水线执行. 近些年新上的嵌入式架构基本都是RISC的.

    你可以把8051的复杂度, 和MIPS或者Cortex-M0之类的复杂度做对比.

    这个, 和能不能跑Linux没有关系. PIC32就是基于MIPS的单片机.
    1  2  
    ❮ ❯
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   5609 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 211ms · UTC 02:48 · PVG 10:48 · LAX 18:48 · JFK 21:48
    ♥ Do have faith in what you're doing.