Python
Java
PHP
IOS
Android
Nodejs
JavaScript
Html5
Windows
Ubuntu
Linux
什么是 ARM Thumb 指令集?
在 ARM11TechnicalRefManual 第 1 34 节的 Thumb 指令集 下 它说 Thumb指令集是最常用的32位ARM指令的子集 Thumb指令有16位长 并且有相应的32位ARM指令 对处理器模型具有相同的效果 任何
arm
thumb
instructionset
为什么 RV64 为 32 位操作而不是 64 位操作引入新的操作码
在浏览 RISC V 规范时 我注意到 64 位版本与 32 位版本的不同之处在于 它 将寄存器扩展至 64 位 更改了指令以作用于整个 64 位范围 添加了执行 32 位操作的新指令 这使得 RV32 代码与 RV64 不兼容 但是 如果
Assembly
32bit64bit
RISCV
opcode
instructionset
为什么IA32不允许内存到内存mov? [复制]
这个问题在这里已经有答案了 在Intel架构IA32中 movl movw等指令不允许操作数同时是内存位置 例如 不允许使用指令 movl eax edx 为什么 答案涉及对 RAM 的更全面的理解 简单来说 RAM只能处于两种状态 读模式
Assembly
x86
cpuarchitecture
instructionset
为什么ARM说“链接寄存器支持快速叶函数调用”
我最近遇到了链接寄存器和叶函数的概念 我从之前的 SO 读中了解到 LR 告诉代码之前在执行期间的位置 我还知道叶函数是位于函数调用层次结构末尾的函数 The ARM 维基百科页面说 https en wikipedia org wiki
Assembly
arm
cpuarchitecture
instructionset
ARM 与 x86 的主要区别是什么?
我不太有兴趣了解在每个平台上开发代码时在程序员习惯做什么或他发现更容易做什么等方面的 小字 差异 我也对详细的物理差异不感兴趣核心 如果适合你的叙述 我不介意提及它们 我只是不想关注上面的内容 我只是想知道为什么x86等CISC架构优于RI
x86
arm
CPU
cpuarchitecture
instructionset
为什么不允许 movl 从内存到内存?
我想知道集会中是否允许这样做 movl edx eax 我猜它会访问第一个操作数中的内存并放入 第二个操作数的内存 例如 a b 但我还没有看到任何处理此类问题的示例 所以我猜这是不允许的 另外 我被告知这是不允许的 leal esi ed
Assembly
x86
cpuarchitecture
instructionset
32位OR如何保持加载指令?(RISC风格32位架构)
我对指令大小和可寻址空间有点困惑 我假设指令大小应该与地址位的大小相同 我在书中没有找到足够的解释 如果我是正确的 那么理论上如果我们有一个 2 32 32位架构 RISC风格 中的内存可寻址单元 字节 4字节大小的加载指令如何保存操作码和
Assembly
operatingsystem
CPU
cpuarchitecture
instructionset
AVX2 中的条件指令
您能给出 AVX2 中可用的条件指令列表吗 到目前为止 我发现了以下内容 mm256 blendv 可供选择a and b基于掩码c 是否有条件乘法和条件加法等 另外 如果接受指示imm8计数 比如 mm256 blend 你能解释一下如何
conditionalstatements
vectorization
x8664
instructionset
avx2
ARM中Q(饱和标志)的重要性
我想了解 Q 标志在 ARM 处理器中的重要性 我知道有一些指令 如 QADD QSUB 等 但我需要通过一些例子来理解这一点 以澄清这个概念 ARM 架构参考手册 ARM DDI 0100E 对此进行了解释 位 27 的CPSR is a
Assembly
arm
processor
instructionset
saturationarithmetic
x86 函数调用类型
我是x86新手 我的问题是关于函数调用 据我所知 有三种函数调用类型 短调用 0xe8 远调用 0x9a 和近调用 0x 有些将短调用称为相对调用 ip arg cs inv 将远调用称为绝对调用 ip arg cs arg 但近调用又如何
Assembly
x86
Call
instructionset
指令集架构的定义是什么?
我试图弄清楚指令集架构 ISA 到底是什么 根据我所读到的内容 我有两种解释 我的第一个解释是 ISA 是所有寄存器 汇编指令和伪指令 汇编指令以及构成汇编语言的指令格式的集合 可用于对实现指令集的处理器进行编程 我的第二种解释是 ISA
Assembly
cpuarchitecture
instructionset
ARM:为什么立即数只有 12 位?
这是什么意思 我只有 12 位用于立即常量 所以我只能表示从 0 到 2 12 4096 的立即常量吗 操作数 2 如果是寄存器 可以有 32 位 但为什么立即数只有 12 位 这个数字从哪里来 它由指令集定义 例如 这MOV指令编码为 3
Assembly
arm
cpuarchitecture
instructionset
immediateoperand
汇编中的伪指令和软件抽象
这更多的是一个一般性的理论问题 我正在学习一些汇编语言 并注意到一些软件 例如 MARS for MIPS 实现架构的真实指令集中不存在的抽象 这似乎被称为伪指令 其示例是li 以及其他舒适的抽象 例如整齐的数组创建等 我的问题是 如果我想
Assembly
instructionset
RISC 架构中小数的直接算术运算
是否有任何 RISC 架构允许算术运算单独应用于字节 半字和其他数据单元 其大小小于 CPU 通用寄存器的大小 在 Intel x86 IA 32 和 x86 64 称为 EM64T 或 AMD64 处理器中 不仅整个寄存器可用 而且其较小
Assembly
x86
cpuarchitecture
instructionset
RISC
执行指令和读/写数据时,x86 如何处理字节寻址和字寻址?
所以我正在学习 x86 的工作原理 并且遇到过人们说它是字节寻址的 但可以读取字 双字等 处理器如何决定使用哪种方法以及何时使用 例如 为了访问下一条指令以及当用户想要读 写存储器时 使用哪种寻址模式 每个内存访问都有一个由机器代码指令指定
Assembly
x86
cpuarchitecture
instructionset
instructionencoding
Intel 处理器的虚拟操作处理
诚然 我有一个有点愚蠢的问题 基本上 我想知道是否 英特尔处理器提供了一些特殊的机制来有效地 执行一系列虚拟指令 即 NOP 指令 例如 我可以想象那里 可能是某种识别 NOPS 并丢弃它们的预取机制 并尝试获取一些有用的指令 或者这些 N
Assembly
x86
intel
cpuarchitecture
instructionset
为什么 x86_64 CPU 上没有通用寄存器的乘加融合?
在 Intel 和 AMD x86 64 处理器上 SIMD 矢量化寄存器具有特定的融合乘加功能 但通用 标量 整数 寄存器don t 你基本上需要先乘法 然后加法 除非你可以将东西放入一个lea 这是为什么 我的意思是 它是否毫无用处以至
x8664
intel
cpuarchitecture
instructionset
amdprocessor
对于无符号数和有符号数的补码,哪些算术运算是相同的?
我正在设计一个简单的玩具指令集和随附的模拟器 并且正在尝试找出支持哪些指令 在算术方面 我目前有无符号加法 减法 乘法和除法 但是 我似乎无法找到以下问题的明确答案 哪些算术运算符需要签名版本 哪些算术运算符的无符号和补码签名版本等效 例如
Binary
twoscomplement
instructions
instructionset
XCHG 在 Intel 汇编语言中如何工作?
如何xchg以下代码中的指令工作 已知arrayD是一个 DWORD 数组 1 2 3 mov eax arrayD eax 1 xchg eax arrayD 4 eax 2 arrayD 2 1 3 为什么后面不是数组 1 1 3xch
Arrays
Assembly
x86
instructionset
机器代码如何存储在EXE文件中?
我的问题如下 一般而言 可移植可执行文件格式 在 Windows Unix 上 与 x86 x64 指令集有何关系 PE 格式是否存储处理器支持的确切操作码集 或者是操作系统转换以匹配 CPU 的更通用格式 EXE 文件如何指示所需的指令集
x86
portableexecutable
machinecode
instructionset
opcode
«
1
2