The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Рассматривается возможность перевода NTPsec на язык Rust или Go"
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Заметили полезную информацию ? Пожалуйста добавьте в FAQ на WIKI.
. "Рассматривается возможность перевода NTPsec на язык Rust или..." +/
Сообщение от Orduemail (ok), 10-Янв-17, 17:52 
> разыменование является значащей операцией

В C++ это значащая операция. Да и то не всегда. В C же разыменование не имеет побочных эффектов -- возможный кеш-промах, со всей последующей активностью процессора не в счёт. Разыменование может иметь побочные эффекты, если оно приводит к UB, например, в случае чтения из нулевого указателя. Но если оно приводит к UB, то компилятор волен действовать так, как ему заблагорассудится.

А чтобы не быть голословным, вот результат компиляции
$ cat tmp.c
void fn(int *p)
{
    int dead = *p;
    if(!p)
        return;
    *p = 4;
}
$ gcc -v
...
gcc version 4.9.4 (Gentoo 4.9.4 p1.0, pie-0.6.4)
$ gcc -Wall -O2 -S tmp.c
tmp.c: In function 'fn':
tmp.c:3:6: warning: unused variable 'dead' [-Wunused-variable]
  int dead = *p;
      ^
$ cat tmp.s
    .file    "tmp.c"
    .section    .text.unlikely,"ax",@progbits
.LCOLDB0:
    .text
.LHOTB0:
    .p2align 4,,15
    .globl    fn
    .type    fn, @function
fn:                                        ; <--- точка входа функции
.LFB0:
    .cfi_startproc
    testq    %rdi, %rdi         ; проверка на нуль
    je    .L1                           ; если нуль, то го на выход
    movl    $4, (%rdi)         ; иначе: *p = 4
.L1:
    rep ret                            ; собственно выход
    .cfi_endproc
.LFE0:
    .size    fn, .-fn
    .section    .text.unlikely
.LCOLDE0:
    .text
.LHOTE0:
    .ident    "GCC: (Gentoo 4.9.4 p1.0, pie-0.6.4) 4.9.4"
    .section    .note.GNU-stack,"",@progbits

Ответить | Правка | Наверх | Cообщить модератору

Оглавление
Рассматривается возможность перевода NTPsec на язык Rust или Go, opennews, 10-Янв-17, 09:54  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру