“不管现在流行什么语言,你都可以肯定十年二十年之后它不再风光。我总是在自己的书中写些不时髦的东西,但这些东西却值得后代子孙记取。”
-- Donald E. Knuth
为什么要学习OpCode?
随着学习的深入和知识的积累,各位编程爱好者都一定不再满足于语言和表层知识的学习,而开始对系统的一些底层知识感到好奇,进而逐渐往深层次探究。正当我们为微软一轮轮的技术革新而强迫自己努力学习的时候,我们可曾花时间去考虑一些深层次的东西?
在编译器后端设计、反汇编器、病毒、破解等底层领域中,处处可见OpCode的影子,奇怪的是,很少有人真正深入地去研究这个领域的东西。一种技术的发展和流行,关键是要有好的书籍/教程作为指引,目前比较规范的中文的OpCode教程好像还没有,于是很多人在这个问题上,都只是处于摸索阶段,没有抓住问题的核心。在这里,希望能与大家分享一些我的经验和教训。
参考资料
- 最权威的 【IA-32 Intel体系结构软件开发者手册】
- 俄罗斯大哥The Svin的OpCode系列教程使我入了门。
备注:
①IA-32 Intel体系结构软件开发者手册 第一卷:系统架构
描述了IA-32处理器基本体系结构和编程环境。
②IA-32 Intel体系结构软件开发者手册 第二卷:指令集参考
描述了处理器指令集和操作数结构。
③IA-32 Intel体系结构软件开发者手册 第三卷:系统编程指南
描述了IA-32环境下的操作系统,包括内存管理,保护机制,任务管理,中断和异常处理,系统管理模式。并提供了IA-32处理器的兼容信息。
卷三的内容主要是针对操作系统和BIOS设计者与开发者。
转发自【老罗】