问题标签 [instruction-set]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
assembly - 我在哪里可以找到 *all* MIPS 指令的描述
有谁知道一个网站,我可以在其中找到 32 位 MIPS 指令/操作码列表,具有以下功能:
- 清楚地区分真正的操作码和汇编语言宏(伪指令)
- 描述指令行为,包括取决于特权级别的差异。
- 指示在哪个指令集修订版中引入/修订了指令(例如 MIPS I、MIPS II、MIPS32 等)
- 包括特权指令,例如系统调用。
我知道有许多网站记录了指令集的“一部分”,主要用于教学目的。他们倾向于省略或仅部分描述浮点和特权指令。
如果您想知道,我正在查看 MIPS 处理器子集的 Verilog 代码,并试图弄清楚它在多大程度上符合任何真正的 MIPS 处理器的指令集!
linux - 确定 Linux 中二进制文件的目标 ISA 扩展名(库或可执行文件)
我们有一个与在带有 Via C3 处理器的 Advantech POS 板上的(相当旧的)FC3 下运行的 Java 应用程序相关的问题。Java 应用程序有几个通过 JNI 访问的已编译共享库。
Via C3 处理器应该与 i686 兼容。前段时间在具有相同处理器的 MiniItx 板上安装 Ubuntu 6.10 后,我发现前面的说法并非 100% 正确。由于缺少C3处理器中设置的i686的一些特定和可选指令,Ubuntu内核在启动时挂起。在使用 i686 优化时,GCC 编译器默认使用 i686 集的 C3 实现中缺少的这些指令。在这种情况下,解决方案是使用 i386 编译版本的 Ubuntu 发行版。
Java 应用程序的基本问题是 FC3 发行版是通过从另一台 PC(这次是 Intel P4)的 HD 映像克隆而安装在 HD 上的。之后,该发行版需要进行一些黑客攻击才能使其运行,例如用 i386 编译版本替换一些软件包(例如内核)。
问题是工作一段时间后系统完全挂起,没有任何痕迹。我担心某些 i686 代码会留在系统中的某个位置,并且可以随时随机执行(例如从挂起模式恢复后或类似的情况)。
我的问题是:
- 是否有任何工具或方法可以找出二进制文件(可执行文件或库)需要哪些特定架构扩展?
file
没有提供足够的信息。
multicore - 如何控制进程在哪个核心上运行?
我可以理解如何编写一个使用多个进程或线程的程序:fork() 一个新进程并使用 IPC,或者创建多个线程并使用这些类型的通信机制。
我也理解上下文切换。也就是说,只有一个 CPU,操作系统为每个进程安排时间(并且有大量的调度算法),从而我们实现了同时运行多个进程。
现在我们有了多核处理器(或多处理器计算机),我们可以让两个进程在两个独立的内核上同时运行。
我的问题是关于最后一个场景:内核如何控制进程在哪个内核上运行?哪些系统调用(在 Linux 甚至 Windows 中)在特定内核上调度进程?
我问的原因是:我正在为学校开展一个项目,我们将在其中探索最近的计算主题——我选择了多核架构。似乎有很多关于如何在这种环境中编程(如何观察死锁或竞争条件)的材料,但关于控制单个内核本身的材料却不多。我希望能够编写一些演示程序并提供一些汇编指令或 C 代码,以达到“看,我在第二个核心上运行一个无限循环,看看那个特定核心的 CPU 利用率峰值”的效果.
任何代码示例?还是教程?
编辑:为了澄清 - 许多人说这是操作系统的目的,应该让操作系统来处理这个问题。我完全同意!但是我要问(或试图感受)操作系统实际上做了什么来做到这一点。不是调度算法,而是更多“一旦选择了一个核心,必须执行哪些指令才能让该核心开始获取指令?”
memory - MIPS 上的“对齐”指令
这条指令具体是做什么的?我知道它会尝试将数据与特定数字的倍数对齐,但为什么需要这样做?其他汇编程序中是否有等效指令?
assembly - 汇编语言和机器语言有什么关系?
汇编语言和机器语言(对于同一个底层系统)真的一样吗?这两个概念有什么区别吗?
java - JVM instruction set CPU cycles & byte size
The Java Virtual Machine Instruction Set page provides information about mnemonics such as aaload, aastore... etc.
However neither the cpu cycles that these mnemonics would take up is mentioned nor is there any info on the byte size or word size of these mnemonics.
Any idea where this information could be found?
operating-system - 程序如何执行?操作系统在哪里发挥作用?
程序从某种语言编译为 ASM --> 机器代码(直接可执行)。当人们说这取决于平台时,意味着形成的二进制文件将(正确)仅在具有相同指令集架构(如 x86、x86-64)的 CPU 上运行。由于 ISA 的不同,它可能(错误地)/可能(根本不)在其他进程上运行。正确的?
现在,二进制文件的概念让我感到困惑。一切都与“机器语言代码”和“CPU”有关。操作系统在哪里发挥作用?我的意思是编译后的二进制文件在加载到内存时有直接的 CPU 指令。& CPU 一次执行一条指令。除了进程管理链接文本之外,我在任何地方都看不到操作系统的作用。无论操作系统如何,它都应该在相同 ISA 的 CPU 上运行。正确的?
然而事实并非如此。如果我在 Windows 机器上构建 x86 的代码。它不会在 Mac x86 机器或 Linux x86 机器上运行。
我在这里遗漏了一些东西。请清除我的困惑。
gpu - 显卡有自己的指令集吗?
显卡有自己的指令集吗?我认为他们会这样做,但我一直想知道它们是否是专有的,或者是否有某种开放标准。
每个 GPU 指令之前是否都有一条 CPU 指令,还是无缝的?
也就是说,OpenGL 或 DirectX 是通过 CPU 调用驱动程序层,然后将 GPU 指令发送到总线上还是更复杂?
assembly - MOV和LEA有什么区别?
我想知道这些指令之间的区别是什么:
和
assembly - x86 asm 指令集:任何 _searchable_ 离线参考?
我对组装有点陌生,必须时不时地查看 x86 指令。一段时间后,在网上搜索所有其他操作码会变得很烦人。然后是英特尔参考手册,但内容页面没有直接链接到 pdf 文件中的各个部分,也没有列出“真实”页面名称,而是按 [章节]-[相对页面编号number],我必须用它来猜测操作码的页码。
所以问题是,有没有针对 x86 指令的有效可搜索离线参考?
我依稀记得 CheatEngine 反汇编程序为您在反汇编中单击的每个操作码提供了一些信息。但是它仅限于 Windows,而且这些天我大部分时间都在使用 Linux。但这样的事情会很好。
编辑:嗯,我意识到我可以在 pdf 中搜索该章节页面编号字符串,这可能是唯一的。但我仍然更喜欢我可以输入操作码并直接获取信息的东西。