Показать сообщение отдельно
Старый 15.02.2017, 11:36   #105  
fed is offline
fed
Moderator
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,176 / 3994 (138) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
Цитата:
Сообщение от mazzy Посмотреть сообщение
префиксный ++ остался еще с C, где способ записи имел значение. оба способа могут выстрелить в колено. но префиксный был быстрее в общем случае.
Уходя в некоторый офтопик: И на PDP-11 и на VAX, были префиксный автодекрементый и постфиксный автоинкрементный способы операции. То есть - система сначала уменьшала регистр на размер операнда, а потом брала значение операнда по адресу из регистра. Или наоборот - система сначала брала значение операнда по адресу из регистра, и потом регистр увеличивала на размер операнда.
Поэтому конструкция a=*(--ptr) и a=*(ptr++) транслировались в одну машинную команду, а конструкции a=*(ptr--) и a=*(++ptr) - в две.
Аналогично - операции ++ и -- были введены как раз потому что в PDP-11 были специальные машинные команды INC и DEC, которые увеличивали или уменьшали операнд на единицу и работали занимали меньше памяти и работали чуть быстрее чем обычные операции сложения и вычитания.