On 1/8/2022 10:04 PM, max haughton wrote:
For GCC/Clang you'd want -S

I know about that, but take a look at it:


> cat fred.c

int fred(int a[10])
{
    return a[11];
}

> cc -S test.c
> cat test.s
        .file   "test.c"
        .text
        .globl  test
        .type   test, @function
test:
.LFB0:
        .cfi_startproc
        pushq   %rbp
        .cfi_def_cfa_offset 16
        .cfi_offset 6, -16
        movq    %rsp, %rbp
        .cfi_def_cfa_register 6
        movl    $0, %eax
        popq    %rbp
        .cfi_def_cfa 7, 8
        ret
        .cfi_endproc
.LFE0:
        .size   test, .-test
        .ident  "GCC: (Ubuntu 4.8.4-2ubuntu1~14.04.4) 4.8.4"
        .section        .note.GNU-stack,"",@progbits

************************************************

Contrast with what -vasm does:

> cat test.d:

int fred(int* a)
{
    return a[11];
}

> dmd -c test.d -vasm
_D4test4fredFPiZi:
0000:   8B 47 2C                mov     EAX,02Ch[RDI]
0003:   C3                      ret

***********************************************

-vasm gives me what I want to see. There aren't extra steps to getting it, the object code is included, and all the boilerplate is omitted.

It's all about the friction.

Reply via email to