如何学习汇编语言?

2023-05-16 13:28:13 +08:00
 realdvorak

已经看过了王爽老师的《汇编语言》,讲的很好,但是是用 8086 入门的。想进一步学习,有没有推荐的教材,现在在看《从实模式到保护模式》,这本怎么样?

1087 次点击
所在节点   汇编
7 条回复
sjkdsfkkfd
2023-05-16 16:54:29 +08:00
https://stackoverflow.com/tags/x86/info

直接从比较现代的东西看吧,熟悉语法直接去 compiler 上看编译器编译的结果也行

从头写汇编程序已经没啥用处了,能读懂编译器输出的汇编片段,能写一点 inline assembly 做优化就可以了
sjkdsfkkfd
2023-05-16 16:55:59 +08:00
@sjkdsfkkfd compiler explorer ,手快没打出来
secondwtq
2023-05-16 19:39:50 +08:00
学习任何东西最好的办法是实践,就好像学英语要坚持有效的输入输出
当然怎么实践有学问,比如学 C#,可以先拿 C# 刷几道 LeetCode 熟悉基本用法,写几个小工具之类的,但是到后面取决于你要做什么,搞 Web 服务,做 Windows 程序开发,做游戏等涉及到的库和知识体系是有很大不同的
汇编也一样,如果你是想操作硬件那就试着写个 bootloader ,研究开源 OS 中一些 Arch-specific 的设计和实现,做安全就去解 crackme
我一开始学汇编是想着搞点逆向,后来是研究编程语言语义的实现,再后来是做程序优化,结果都搞了个半吊子,现在 jl je jnz 都分不清楚,但是干活勉强够用
secondwtq
2023-05-16 19:46:00 +08:00
另外就是建议不要仅仅停留在 x86 上,可以看看 ARM 之类的,现在资源也丰富起来了,以及一些资料较少,但是也很有意思的较新的架构比如 RISC-V ,甚至是已经淡出主流的架构比如 Alpha ,很多设计上的选择很有启发性(也包括传统 CPU 和其他处理器比如 GPU 的架构设计也有很有趣的区别)
wafm
2023-05-16 19:46:07 +08:00
扫雷,植物大战僵尸

去逆向分析一下基本也就没问题了
vangjing
2023-05-16 19:52:19 +08:00
可以参考滴水的逆向课程,B 站搜就有,也可以看这个博客,算是课程的文字版 https://www.cnblogs.com/iBinary/?page=20

单纯的学汇编意义好像不大,单纯学习汇编的结果大概率能看懂每条汇编干了什么,但是给一段汇编就不知道干啥了,可以结合其他内容,比如操作系统、编程语言之类的。
zeze0556
2023-05-18 08:56:19 +08:00
学汇编最快的方式就是破解,逆向

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/940385

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX