小编Mir*_*cea的帖子

ARM在Linux内核中注册r9

"ARM体系结构过程调用标准"(AAPCS/EABI)声明(5.1.1)

"The role of register r9 is platform specific."
Run Code Online (Sandbox Code Playgroud)

"A virtual platform [...] may designate r9 as an additional callee-saved
 variable register, v6."
Run Code Online (Sandbox Code Playgroud)

问题是:Linux内核是否将r9用于特殊用途?或者它是否用作普通的非易失性寄存器?

arm abi cpu-registers linux-kernel

6
推荐指数
1
解决办法
1152
查看次数

ARM NEON:比较128位值

我有兴趣找到比较存储在Cortex-A9内核上的NEON寄存器(比如Q0和Q3)的值的最快方法(最低周期数)(允许VFP指令).

到目前为止,我有以下内容:

(1)使用VFP浮点比较:

vcmp.f64        d0, d6
vmrs            APSR_nzcv, fpscr
vcmpeq.f64      d1, d7
vmrseq          APSR_nzcv, fpscr
Run Code Online (Sandbox Code Playgroud)

如果64位"浮动"等同于NaN,则此版本将不起作用.

(2)使用NEON缩小和VFP比较(这次只有一次并且以NaN安全的方式):

vceq.i32        q15, q0, q3
vmovn.i32       d31, q15
vshl.s16        d31, d31, #8
vcmp.f64        d31, d29
vmrs            APSR_nzcv, fpscr
Run Code Online (Sandbox Code Playgroud)

D29寄存器先前预先加载了正确的16位模式:

vmov.i16        d29, #65280     ; 0xff00
Run Code Online (Sandbox Code Playgroud)

我的问题是:有没有比这更好的了?我是否在监督一些明显的方法呢?

arm simd vectorization neon

5
推荐指数
1
解决办法
1772
查看次数

使用 Win32 API 访问 PCI 配置空间

给定 PCI 设备的地址(即总线、设备、功能),如何在用户空间中使用 Win32 API 调用以编程方式读取该设备的配置空间(例如供应商 ID、设备 ID)?

在 Linux 上,打开 /sys/bus/pci/devices//config 文件并从正确的偏移量读取。

windows winapi drivers pci-bus pci

5
推荐指数
1
解决办法
2412
查看次数

标签 统计

arm ×2

abi ×1

cpu-registers ×1

drivers ×1

linux-kernel ×1

neon ×1

pci ×1

pci-bus ×1

simd ×1

vectorization ×1

winapi ×1

windows ×1