问题标签 [instructions]
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.
java - Java 编译器或 JVM 可以交换独立指令的指令顺序吗?
让我们采取以下陈述:
现在一个线程具有以下说明:
而另一个线程有这个指令:
如果我们并行运行这些线程,显然有三种组合ds
可以看起来像:{0, 0}、{1, 1} 和 {1, 0}。
现在最大的问题是:也可以有 {0, 1} 吗?编译器/JVM 可以简单地交换指令,因为它认为它们不相关吗?如果是,那么这种行为的“规则”到底是什么,这取决于编译器还是 JVM?
build - NSIS 使用 InstalldirRegKey
从 NSIS 文档中,我们有
root_key subkey key_name
此属性告诉安装程序检查注册表中的字符串,如果该字符串有效,则将其用于安装目录。如果此属性存在,如果注册表项有效,它将覆盖 InstallDir 属性,否则将回退到 InstallDir 默认值。
所以,如果我在.nsi
文件中有这些行:
我知道我将安装目录设置D:\myFolder\myFile
为默认目录,但如果Software\${PRODUCT_COMPANY}\${PRODUCT_NAME}
是有效路径,那么我将使用它。那是对的吗?
从另一篇文章中,我了解到该InstallDirRegKey
指令用于覆盖以前在同一位置的安装。它如何更精确地工作?如果我有以下情况,
NSIS 脚本生成的新.exe
文件会覆盖之前的文件吗?或者这是否意味着可执行文件将覆盖前一个?
arm - ARM 在寄存器 14 之后从哪里读取程序指令?
我是如何理解 ARM 架构的基本工作原理的;
有 15 个主寄存器,第 15 个 (r15) 是程序计数器 (PC)。
如果程序计数器指向一个特定的寄存器,那么你怎么能有一个运行超过 14 行的程序呢?
显然这不是真的,但我不明白你怎么能合并一个只有 15 个寄存器的大程序?我错过了什么?
mips - 动态与静态指令数
动态和静态指令计数有什么区别?
一种。导出一个表达式来计算作为以下参数的函数的用户 CPU 时间:动态指令计数 (N)、每条指令的时钟周期 (CPI) 和时钟频率 (f)
湾。解释在问题 3a 中选择“动态”指令计数作为参数而不是“静态”指令计数的原因
port - 英特尔 8080 指令:输出
我正在尝试模拟英特尔 8080 指令集,但我被困在这条指令上OUT D8
,根据英特尔 8080/8085 汇编语言编程一书,它说
OUT
指令将累加器的内容放在 8 位数据总线上,将所选端口的编号放在 16 位地址总线上。由于端口数的范围从 0 到 255,因此端口号在地址总线上是重复的。
问题是我不明白这是做什么的。有人可以向我解释一下,或者让我看一篇解释它的文章或一本书。
c - IA32 到 Y86 汇编代码转换
我的任务是将 IA32 代码转换为 Y86。原始程序是用 C 编写的,旨在获取一个整数数组,其中偶数定位值调用三个函数之一,奇数定位值在该函数内进行操作。这些函数包括数字的否定、数字的平方以及从 1 到提供的数字的总和。
大多数指令都可以轻松地从 IA32 转换为 Y86,但是有许多指令让我非常难受。
neg 指令不是 Y86 中的有效指令。这就是我在 Y86 中所拥有的:
这是解决这个问题的正确方法吗?
另一个指令是我的平方函数中的 imul 指令:
有谁知道在这种情况下如何转换“imul”指令?
谢谢您的帮助!任何有关 IA32/Y86 转换的提示也将不胜感激。
assembly - 英特尔 8080 仿真器测试仪
我为 Intel 8080 编写了一个模拟器,我想检查我实现的指令是否正确。是否有测试套件或方法来测试每条指令是否正确?
我的模拟器是用 C 编写的。
gcc - 我想要 __builtin_popcountll 的两个实现
我有一些代码我想运行快速的内置 CPU 指令popcnt
(当__builtin_popcountll
使用适当的标志编译时,例如 with g++ -mpopcnt
or clang++ -march=corei7
,会发生这种情况),但也能够在cpuid
显示 CPU 不支持时回退到代码硬件指令。
当然,要获得我相信编译器人员已经正确实现的后备代码(所以我不必引入 C 或 asm 代码来做我的 popcount),我需要一个单独的编译单元,它在编译时没有-mpopcnt
or-march=corei7
标志。
将单独编译的代码链接在一起是唯一的方法吗?是否没有编译器内在函数或其他类型的提示或其他我不知道的内置函数可以用来让它生成后备 popcount 代码?
architecture - 同时获取和解码两条指令的含义
通常每个周期一次提取和解码一条指令。
我想知道如果我们同时获取和解码 2 条指令会有什么影响。架构中需要更改的更改是什么?
x86 - 为什么要两条按位或 AVX 指令?
在 AVX 中有两条指令来执行按位或 VORPD 和 VORPS。文档说:
和
这两个处理器操作之间有什么实际区别吗?如果不是:为什么有两条指令?如果不是:使用它们进行整数按位或是否安全?