如果这些问题很愚蠢或者与本网站无关,我很抱歉。我真的不知道还能在哪里问这个问题。
好吧,首先,我不太了解微处理器上的指令集是如何工作的。它们是通过汇编语言实现的吗?英特尔是否对 Haswell 或 Ivy Bridge 等 CPU 系列的所有微处理器使用相同的指令集,还是每个特定的微处理器都不同?我一直认为微架构与指令集是一回事,但显然不是。有人能给我解释一下吗?最后一件事:有没有什么地方可以查看英特尔或 AMD 微处理器的指令集?
提前非常感谢您。
答案1
如果您想要任何 CPU 的指令列表,通常您需要该 CPU 的指令集参考或程序员参考指南。
英特尔:http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html
AMD:http://developer.amd.com/resources/documentation-articles/developer-guides-manuals/(架构程序员手册就是你想要的)
Intel 有多种处理器架构,其中 x86 是最受欢迎的。x86 随着时间的推移而不断扩展,通常后来的版本与早期版本向后兼容。例如,Intel 的第一款 x86 架构处理器是 8088。然后是 80286。它扩展了 8088 指令集。80286 可以理解所有 8088 汇编。80386、80486、奔腾、酷睿系列和 i 系列也是如此。
我一直认为微架构和指令集是一回事
不是。微架构位于“下方”,并实现主架构。在这种情况下,英特尔有许多微架构,它们实现各种修订版 x86 指令集。对于学习汇编语言编程来说,微架构不是你需要担心的事情。你需要知道哪个x86修订(或建筑,不是微您可能希望先从一本书或其他教您如何编写 8088 程序的东西开始,因为它会更简单,而且以后的架构修订版(286、386 等)都是以此为基础构建的。
好吧,首先,我不太明白微处理器上的指令集是如何工作的。它们是通过汇编语言实现的吗?
汇编语言允许程序员使用类似于人类可读文本的内容编写机器语言,并且通常允许您使用标签而不是记住原始 RAM 或 I/O 地址。另一种方法是手动输入每条指令的操作码,考虑到 x86 的指令数量和寻址模式,这是一项非常繁琐的任务。
每条指令都由一个助记符表示,并转换为一条机器语言指令。汇编程序将获取你的汇编代码(在文本文件中)并集合(不编译)将其转换为 CPU 可以运行的二进制映像。
AMD 复制了英特尔的指令集,但开始在 SSE 指令、VMM 指令和其他方面有所差异。不过,您学到的英特尔汇编语言的大部分知识都适用。