Странный Линаро Мипс компилятор вывод сборки

Для создания ассемблерного кода я вызываю компилятор mipsel-openwrt-linux-uclibc-gcc (Linaro GCC 4.8-2014.04 r49389) с флагом -S. Это производит ассемблерный код, похожий на этот:

        .section .mdebug.abi32
        .previous
        .gnu_attribute 4, 3
        .abicalls
        .option pic0
        .text
    $Ltext0:
        .cfi_sections   .debug_frame
        .globl  Version
        .section    .rodata.str1.4,"aMS",@progbits,1
        .align  2
    $LC0:
        .ascii  "3.3\000"
        .data
        .align  2
        .type   Version, @object
        .size   Version, 4
    Version:
        .word   $LC0
        .text
    $Letext0:
        .file 1 "version.c"
        .section    .debug_info,"",@progbits
    $Ldebug_info0:
        .4byte  0x3d
        .2byte  0x4
        .4byte  $Ldebug_abbrev0
        .byte   0x4
        .uleb128 0x1
        .4byte  $LASF0
        .byte   0x1
        .4byte  $LASF1
        .4byte  $LASF2
        .4byte  $Ldebug_line0
        .uleb128 0x2
        .4byte  $LASF3
        .byte   0x1
        .byte   0x2
        .4byte  0x2e
        .uleb128 0x5
        .byte   0x3
        .4byte  Version
        .uleb128 0x3
        .byte   0x4
        .4byte  0x34
        .uleb128 0x4
        .4byte  0x39
        .uleb128 0x5
        .byte   0x1
        .byte   0x6
        .4byte  $LASF4
        .byte   0
        .section    .debug_abbrev,"",@progbits
    $Ldebug_abbrev0:
        .uleb128 0x1
        .uleb128 0x11
        .byte   0x1
        ---- I cutted here ----
        .uleb128 0xe
        .byte   0
        .byte   0
        .byte   0
        .section    .debug_aranges,"",@progbits
        .4byte  0x14
        .2byte  0x2
        .4byte  $Ldebug_info0
        .byte   0x4
        .byte   0
        .2byte  0
        .2byte  0
        .4byte  0
        .4byte  0
        .section    .debug_line,"",@progbits
    $Ldebug_line0:
        .section    .debug_str,"MS",@progbits,1
    $LASF2:
        .ascii  "/home/lvr/Src/openwrt/build_dir/target-mipsel_mips32_uCl"
        .ascii  "ibc-0.9.33.2/diffutils-3.3/src\000"
    $LASF0:
        .ascii  "GNU C 4.8.3 -mno-branch-likely -mips32 -mtune=mips32 -ms"
        .ascii  "oft-float -mllsc -mplt -mno-shared -g -Os -std=c99 -fno-"
        .ascii  "caller-saves -fhonour-copts\000"
    $LASF3:
        .ascii  "Version\000"
    $LASF4:
        .ascii  "char\000"
    $LASF1:
        .ascii  "version.c\000"
        .ident  "GCC: (OpenWrt/Linaro GCC 4.8-2014.04 r49389) 4.8.3"
        .section    .note.GNU-stack,"",@progbits

Для меня это не похоже ни на AT&T, ни на Intel. Чтобы получить более знакомый синтаксис, я попробовал флаг -masm = intel, но тот же эффект..

Сначала я подумал, что созданный код ASM предназначен для фиксированной ширины слова в мипах, но есть ли идеи, как генерировать синтаксис AT&T или Intel с помощью mipsel-openwrt-linux-uclibc-gcc?

Спасибо за любые подсказки!

1 ответ

"Какое отношение AT&T и Intel имеет к MIPS?" - Ничего напрямую, я пометил это так, как тег 'mipsel-openwrt-linux-uclibc-gcc' не был доступен (sry, возможно, плохой стиль). Но благодаря Маргарет, ваш комментарий заставил меня скомпилировать еще несколько.c файлов, что приведет к ожидаемому синтаксису AT&T:) - fe:

        .section .mdebug.abi32
        .previous
        .gnu_attribute 4, 3
        .abicalls
        .option pic0
        .text
    $Ltext0:
        .cfi_sections   .debug_frame
        .align  2
    $LFB16 = .
        .file 1 "io.c"
        .loc 1 474 0
        .cfi_startproc
        .set    nomips16
        .ent    prepare_text
        .type   prepare_text, @function
    prepare_text:
        .frame  $sp,48,$31      # vars= 0, regs= 5/0, args= 16, gp= 8
        .mask   0x800f0000,-4
        .fmask  0x00000000,0
        .set    noreorder
        .set    nomacro
    $LVL0 = .
        addiu   $sp,$sp,-48
        .cfi_def_cfa_offset 48
        sw  $17,32($sp)
        sw  $31,44($sp)
        sw  $19,40($sp)
        sw  $18,36($sp)
        sw  $16,28($sp)
        .cfi_offset 17, -16
        .cfi_offset 31, -4
        .cfi_offset 19, -8
        .cfi_offset 18, -12
        --- CUT ---
    $LASF16:
        .ascii  "__ino64_t\000"
    $LASF86:
        .ascii  "changes\000"
    $LASF66:
        .ascii  "__ctype_touplow_t\000"
    $LASF200:
        .ascii  "memcmp\000"
    $LASF118:
        .ascii  "equivs\000"
    $LASF139:
        .ascii  "file_size\000"
        .ident  "GCC: (OpenWrt/Linaro GCC 4.8-2014.04 r49389) 4.8.3"
        .section    .note.GNU-stack,"",@progbits    
Другие вопросы по тегам