«Clobber » в контексте манипулирования данными означает уничтожение данных путем их перезаписи. В контексте файлов в среде Unix это слово использовалось по крайней мере еще в начале 1980-х годов, а возможно, и раньше. Csh пришлось set noclobber
настроить >
на отказ от перезаписи существующего файла (позднее set -o noclobber
в ksh93 и других оболочках в стиле sh -). Когда GNU coreutils добавил--no-clobber
(в 2009 году ), они использовали тот же словарь, что и оболочки.
Термин «клоббер» хорошо -известен в вычислительной технике в целом.
Параметр --no-clobber
/ -n
для cp
был добавлен только в 2009 -01 -14 Камилом Дудкой
В частности, в рамках проекта GNU, оно также используется в GCC для описания случаев, когда инструкция ЦП или встроенный ассемблерный оператор уничтожает содержимое регистра. Так что это не случайно выбранное английское слово, и вполне вероятно, что люди, работающие над проектами GNU, написанными на C, будут хотя бы мимоходом знакомы с использованием этого термина из документации GCC или от других разработчиков проектов GNU, использующих его :
.(clobber x)
в GCC -внутренние файлы описания машины , которые учат GCC тому, что делает каждая инструкция в ISA. (Ограничения, аналогичные встроенным -asm)asm()
имеют раздел «clobber», чтобы сообщить компилятору, какие шаги регистрирует встроенный ассемблерный шаблон. Как этот бесполезный бессмысленный пример x86:asm("xor %eax,%eax; mfence" ::: "eax", "memory", "cc");
. например. SO Q&A с вопросом о соглашении о вызове функции -в этих терминах. -fcall-used-
reg
описывают это как сообщение компилятору о том, что данный регистр "затирается" вызовами функций (, т.е. изменяет соглашение о вызовах ). В отличие от-fcall-saved-
reg
или -ffixed-
reg
. -Wclobbered
предупреждение -«Предупреждать о переменных, которые могут быть изменены с помощью longjmp или vfork». (IDK, если он существовал в 2009 году, но он демонстрирует, что это слово используется для описания такого рода вещей в различных контекстах, включая имена опций в других программах ).Автор коммита coreutils, который добавил --no-clobber
, Камил Дудка, определенно знаком с внутренним устройством GCC :он (позже?)написал подключаемый модуль GCC для формальной проверки программ на C.
Я не знаю, повлияло ли на выбор имени внутреннее устройство GCC, или это было связано с существующими опциями оболочки, такими как set noclobber
, или и то, и другое.
Забавный факт :первоначальные авторы GNU cp
включают Торджорна Гранлунда, основного автора проекта gmplib(GNU Multi -Precision )и который помог изобрести/реализовать мультипликативную -обратная оптимизация для деления при компиляции -постоянная времени(статья 1994 года , переполнение стека вопросы и ответы).