ARM霓虹灯指令生成

时间:2015-08-28 06:52:12

标签: c gcc assembly arm neon

我想通过Roy提供的简单linpack.c程序为ARM生成霓虹灯指令 我使用了arm-linux-gnueabi-gcc的多个标志,例如,

  

arm-linux-gnueabi-gcc -S -mfpu = neon /home/junaid/code/c/linpack.c

据我所知,氖和VFP指令以VADD等V开头。但我看不到任何这样的指令是转储。我还使用了-mfpu = vfp,-funsafe-math-optimizations和static(-s)标志但仍然无法看到任何霓虹灯指令。 要么我没有识别氖指令,要么没有使用正确的gcc标志,或者没有明确地使用生成霓虹灯指令的c代码!!

编辑: 使用命令

编译第一个注释中提到的代码
  

arm-linux-gnueabi-gcc -S -mfpu-neon /home/junaid/code/c/test.c。

asm是

.arch armv5t
    .fpu softvfp
    .eabi_attribute 20, 1
    .eabi_attribute 21, 1
    .eabi_attribute 23, 3
    .eabi_attribute 24, 1
    .eabi_attribute 25, 1
    .eabi_attribute 26, 2
    .eabi_attribute 30, 6
    .eabi_attribute 34, 0
    .eabi_attribute 18, 4
    .file   "test.c"
    .global __aeabi_fadd
    .text
    .align  2
    .global f
    .type   f, %function
f:
    @ args = 0, pretend = 0, frame = 8
    @ frame_needed = 1, uses_anonymous_args = 0
    stmfd   sp!, {fp, lr}
    add fp, sp, #4
    sub sp, sp, #8
    str r0, [fp, #-8]   @ float
    ldr r3, [fp, #-8]   @ float
    mov r0, r3
    mov r1, r3
    bl  __aeabi_fadd
    mov r3, r0
    mov r0, r3
    sub sp, fp, #4
    ldmfd   sp!, {fp, pc}
    .size   f, .-f
    .ident  "GCC: (Ubuntu/Linaro 4.7.3-12ubuntu1) 4.7.3"
    .section    .note.GNU-stack,"",%progbits

1 个答案:

答案 0 :(得分:1)

我使用-O3标志,这有助于解决问题。我得到了vadd, vmul,等指令