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.