LINUX.ORG.RU

История изменений

Исправление iskander9908, (текущая версия) :

iskander in ~/Programs λ gcc num.c -S num.s
iskander in ~/Programs λ cat num.s
        .file   "num.c"
        .text
        .local  a
        .comm   a,4,4
        .local  b
        .comm   b,4,4
        .section        .rodata
        .align 8
.LC0:
        .base64 "aXNrYW5kZXI5OTA4INGD0YLQstC10YDQttC00LDQtdGCINGH0YLQviDQsNC00YDQtdGB0LAg0L3QtSDRgNCw0LLQvdGLOiAlcCAlcAoA"
        .text
        .globl  main
        .type   main, @function
main:
.LFB0:
        .cfi_startproc
        pushq   %rbp
        .cfi_def_cfa_offset 16
        .cfi_offset 6, -16
        movq    %rsp, %rbp
        .cfi_def_cfa_register 6
        subq    $32, %rsp
        leaq    a(%rip), %rax
        movq    %rax, -32(%rbp)
        leaq    4+b(%rip), %rax
        movq    %rax, -24(%rbp)
        movq    -32(%rbp), %rax
        movq    %rax, -16(%rbp)
        movq    -24(%rbp), %rax
        movq    %rax, -8(%rbp)
        movq    -32(%rbp), %rax
        cmpq    -24(%rbp), %rax
        je      .L2
        movq    -24(%rbp), %rdx
        movq    -32(%rbp), %rax
        leaq    .LC0(%rip), %rcx
        movq    %rax, %rsi
        movq    %rcx, %rdi
        movl    $0, %eax
        call    printf@PLT
.L2:
        movl    $0, %eax
        leave
        .cfi_def_cfa 7, 8
        ret
        .cfi_endproc
.LFE0:
        .size   main, .-main
        .ident  "GCC: (GNU) 15.2.1 20250813"
        .section        .note.GNU-stack,"",@progbits
iskander in ~/Programs λ gcc num.s -o num  
iskander in ~/Programs λ ./num
iskander9908 утверждает что адреса не равны: 0x561d8334401c 0x561d83344024

Если я ничего не напутал - то там есть сравнение

Исходная версия iskander9908, :

iskander in ~/Programs λ gcc num.c -S num.s
iskander in ~/Programs λ cat num.s
        .file   "num.c"
        .text
        .local  a
        .comm   a,4,4
        .local  b
        .comm   b,4,4
        .section        .rodata
        .align 8
.LC0:
        .base64 "aXNrYW5kZXI5OTA4INGD0YLQstC10YDQttC00LDQtdGCINGH0YLQviDQsNC00YDQtdGB0LAg0L3QtSDRgNCw0LLQvdGLOiAlcCAlcAoA"
        .text
        .globl  main
        .type   main, @function
main:
.LFB0:
        .cfi_startproc
        pushq   %rbp
        .cfi_def_cfa_offset 16
        .cfi_offset 6, -16
        movq    %rsp, %rbp
        .cfi_def_cfa_register 6
        subq    $32, %rsp
        leaq    a(%rip), %rax
        movq    %rax, -32(%rbp)
        leaq    4+b(%rip), %rax
        movq    %rax, -24(%rbp)
        movq    -32(%rbp), %rax
        movq    %rax, -16(%rbp)
        movq    -24(%rbp), %rax
        movq    %rax, -8(%rbp)
        movq    -32(%rbp), %rax
        cmpq    -24(%rbp), %rax
        je      .L2
        movq    -24(%rbp), %rdx
        movq    -32(%rbp), %rax
        leaq    .LC0(%rip), %rcx
        movq    %rax, %rsi
        movq    %rcx, %rdi
        movl    $0, %eax
        call    printf@PLT
.L2:
        movl    $0, %eax
        leave
        .cfi_def_cfa 7, 8
        ret
        .cfi_endproc
.LFE0:
        .size   main, .-main
        .ident  "GCC: (GNU) 15.2.1 20250813"
        .section        .note.GNU-stack,"",@progbits
iskander in ~/Programs λ gcc num.s -o num  
iskander in ~/Programs λ ./num
iskander9908 утверждает что адреса не равны: 0x561d8334401c 0x561d83344024

Если я ничего не напутал, то там есть сравнение