[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Программирование на функциональных языках - как научить?



On Fri, Aug 21, 2009 at 06:46:05PM +0400, Alexey Pechnikov wrote:
> Hello!
> 
> On Friday 21 August 2009 18:15:41 Stanislav Maslovski wrote:
> > В том и дело, что результат сдвига при mask = 0 в правой части
> > undefined. На моей архитектуре значение всего выражения получается
> > 0xffffffff, но на другой архитектуре это выражение может запросто дать
> > 0x00000000. Я уже устал повторять, в чем там загвоздка. Читай мои
> > письма.
> 
> Да, теперь дошло, что сдвиг на 0 бит допустим, а на 32 - нет. Уже нашел
> в сети, что даже в gcc при разных флагах оптимизации результат разный 
> получается. 

Кстати, такой информации мне на глаза не попадалось. На i386 для
операции << gcc генерит машинный код, состоящий просто из одной
инструкции без всякой дополнительной "обвязки":

sall    %cl, %eax

где число полей сдвига задается в регистре %cl, и роль играют только 5
младших бит этого регистра, отсюда и интересное поведение при %сl > 31.

-- 
Stanislav


Reply to: