如何使用ARMv5TE指令集的增强型乘法器指令

如何使用ARMv5TE指令集的增强型乘法器指令,arm,instructions,instruction-set,Arm,Instructions,Instruction Set,我使用的是ARM966E-S RISC-CPU,我想知道如何使用显然可用的指令集扩展来提高DSP性能,例如。G增强型乘法器指令 我在《技术参考手册》中读到,这些指令集扩展可用,但我不知道如何使用/激活它们 有人能帮忙吗 提前谢谢 为什么不试试呢?或者阅读工具链手册,例如使用gcc 那么,s 试验 arm none eabi as so.s-o so.o arm none eabi as-march=armv5t so.s-o so.o so.s:汇编程序消息: so.s:3:错误:所选处理器不支

我使用的是ARM966E-S RISC-CPU,我想知道如何使用显然可用的指令集扩展来提高DSP性能,例如。G增强型乘法器指令

我在《技术参考手册》中读到,这些指令集扩展可用,但我不知道如何使用/激活它们

有人能帮忙吗


提前谢谢

为什么不试试呢?或者阅读工具链手册,例如使用gcc

那么,s

试验

arm none eabi as so.s-o so.o
arm none eabi as-march=armv5t so.s-o so.o
so.s:汇编程序消息:
so.s:3:错误:所选处理器不支持ARM模式下的“ldrd r0,[r2]”
arm none eabi as-march=armv5te so.s-o so.o
arm none eabi objdump-D so.o
so.o:文件格式elf32 littlearm
第节的分解。正文:
00000000 :
0:e1c200d0 ldrd r0[r2]
4:e5922000 ldr r2[r2]

但是默认情况下如何使用fast指令?我的意思是,我的代码是用C写的,我不想写汇编程序。编译器在默认情况下应始终使用此指令…-march=armv5te也在gcc命令行上工作,那么它是否选择使用这些指令取决于编译器。如果不直接使用汇编语言,则必须学会调整代码以触发编译器生成这些指令,如果它生成了它们(grep通过gcc源代码查看它们是否被使用,然后是何时和为什么)并反汇编结果?它是否生成SMULL?长乘法应该就行了。但是对于饱和和并行算法,您必须使用内部函数,因为它们不能很好地映射到“C”。使用
-march=armv5te
告诉编译器您有
扩展的
DSP指令。“手臂”(架构参考手册)详细说明了这些东西的含义。还有“jazelle”和“s”变体。
PLD
LDRD”和
MULL`都是添加项。看看哪些定义了代码生成。你可以找到你的GCC版本可能需要哪些选项来让编译器发出东西。看看。这比你想象的要复杂。首先有可能使用这些指令,然后比其他指令更有效。ARM管道和“C”语义可能/可能不允许使用这些指令。第一步是指定允许发射操作码的CPU(根据旧时/dwelchs答案)这样做,你可以使用内嵌汇编程序,即使“C”不会哄骗它使用。旧的GCCS有ARM CORCE。DEFF。如果你是深度嵌入的,你可以使用<代码> -MCPU= ARM96E-S 。它应该适用于一些版本的GCC;绝对使用<代码> -MUNTION ARM96E-S 。如果你有其他的编译器,你应该指定。请考虑AL。为特定的编译器添加标记并可能添加“C”?
ldrd r0,[r2]
ldr r2,[r2]
arm-none-eabi-as so.s -o so.o
arm-none-eabi-as -march=armv5t so.s -o so.o
so.s: Assembler messages:
so.s:3: Error: selected processor does not support `ldrd r0,[r2]' in ARM mode
arm-none-eabi-as -march=armv5te so.s -o so.o
arm-none-eabi-objdump -D so.o

so.o:     file format elf32-littlearm


Disassembly of section .text:

00000000 <.text>:
   0:   e1c200d0    ldrd    r0, [r2]
   4:   e5922000    ldr r2, [r2]