YASM在对象二进制文件中排除不必要的模块的参数是什么?

时间:2017-06-26 09:34:57

标签: assembly yasm

yasm,ld,gcc可以排除不必要的部分吗? 我希望gcc在C / C ++中排除它。

;testSize1.asm
    segment .text
    global  main
    extern  printf,scanf ;<== difference part
main:
    push    rbp
    mov     rbp,rsp
    sub     rsp,16

    mov     rax,2

    leave
    ret

;testSize2.asm
    segment .text
    global  main
    ;extern printf,scanf ;<== difference part
main:
    push    rbp
    mov     rbp,rsp
    sub     rsp,16

    mov     rax,2

    leave
    ret

我编译并链接这些命令。

yasm -f elf64 -l testSize1.lst testSize1.asm    
gcc -o testSize2 testSize2.o

-rwxrwxr-x 1 joe joe 8562 Jun 26 15:20 testSize1
-rw-rw-r-- 1 joe joe  119 Jun 26 15:16 testSize1.asm
-rw-rw-r-- 1 joe joe  822 Jun 26 15:20 testSize1.lst
-rw-rw-r-- 1 joe joe  624 Jun 26 15:20 testSize1.o
-rwxrwxr-x 1 joe joe 8475 Jun 26 15:21 testSize2
-rw-rw-r-- 1 joe joe  120 Jun 26 15:20 testSize2.asm
-rw-rw-r-- 1 joe joe  627 Jun 26 15:20 testSize2.lst
-rw-rw-r-- 1 joe joe  560 Jun 26 15:20 testSize2.o

testSize1.o的大小大于testSize2.o。

0 个答案:

没有答案