#include main(int argc,char *argv[]) { int i,sum=0; for(i=1;i<argc;i++) sum+=atoi(argv[i]); printf("%d\n",sum); }
彙編代碼與機器代碼:
ubuntu
y86彙編碼:安全
.file "sum.c" .section .rodata .LC0: .string "Total: %d\n" .text .globl main .type main, @function main: .LFB2: .cfi_startproc pushq %rbp .cfi_def_cfa_offset 16 .cfi_offset 6, -16 movq %rsp, %rbp .cfi_def_cfa_register 6 subq $32, %rsp irmovq %edi, -20(%rbp) irmovq %rsi, -32(%rbp) irmovlq $0, -4(%rbp) irmovlq $0, -8(%rbp) jmp .L2 .L3: movl -8(%rbp), %eax cltq leaq 0(,%rax,8), %rdx movq -32(%rbp), %rax addq %rdx, %rax movq (%rax), %rax movq %rax, %rdi call atoi addl %eax, -4(%rbp) addl $1, -8(%rbp) .L2: movlq -8(%rbp), %eax cmpl -20(%rbp), %eax jl .L3 movl -4(%rbp), %eax movl %eax, %esi movl $.LC0, %edi movl $0, %eax call printf movl $0, %eax leave .cfi_def_cfa 7, 8 ret .cfi_endproc .LFE2: .size main, .-main .ident "GCC: (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609" .section .note.GNU-stack,"",@progbits