- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
# define l2cn(l1,l2,c,n) { \
c+=n; \
switch (n) { \
case 8: *(--(c))=(unsigned char)(((l2)>>24L)&0xff); \
case 7: *(--(c))=(unsigned char)(((l2)>>16L)&0xff); \
case 6: *(--(c))=(unsigned char)(((l2)>> 8L)&0xff); \
case 5: *(--(c))=(unsigned char)(((l2) )&0xff); \
case 4: *(--(c))=(unsigned char)(((l1)>>24L)&0xff); \
case 3: *(--(c))=(unsigned char)(((l1)>>16L)&0xff); \
case 2: *(--(c))=(unsigned char)(((l1)>> 8L)&0xff); \
case 1: *(--(c))=(unsigned char)(((l1) )&0xff); \
} \
}
https://github.com/openssl/openssl/blob/6218a1f57e7e25a6b9a798f00cf5f0e56a02ff31/crypto/des/des_locl.h#L151
Интересно, на кой им делать там &0xff если оно в unsigned char скастовано и лишние биты там уже обрезаны? Или они там предполагают что unsigned char может быть не 8-битным? И вообще, это какая-то херня, почему б просто не узнать endian и не сделать memcpy предварительно развернув байты в случае необходимости? Другого макроговна там тоже хватает
j123123 28.05.2016 10:57 # +2
Похоже что они не очень хорошего мнения об оптимизаторах gcc и clang раз считают нужным писать такие асмовставки
j123123 28.05.2016 11:31 # 0
guesto 28.05.2016 12:01 # 0
bormand 28.05.2016 12:13 # 0
guesto 28.05.2016 13:38 # 0
bormand 28.05.2016 13:40 # 0
guesto 28.05.2016 13:41 # 0
bormand 28.05.2016 13:43 # 0
guesto 28.05.2016 13:46 # 0
bormand 28.05.2016 13:47 # 0
Bobik 28.05.2016 14:48 # 0
j123123 28.05.2016 15:03 # 0
У шланга тоже где-то это должно быть
j123123 28.05.2016 15:19 # 0
https://groups.google.com/forum/#!topic/llvm-dev/9ZreOEi2znI
Bobik 28.05.2016 15:29 # 0
gost 28.05.2016 13:48 # +1
Какие охуительные названия макросов. Интересно, почему большинство людей, дорвавшись до препроцессора, начинают аццки экономить байты исходников, даже если до этого были вполне вменяемыми остальным сущностям дают чёткие и понятные имена?..
guesto 28.05.2016 13:50 # +4
bormand 28.05.2016 13:51 # +7
Завтра его снова будут ебать и бить палкой. Но сегодня ему можно всё.
guesto 28.05.2016 13:55 # 0
bormand 28.05.2016 13:57 # +2
guesto 28.05.2016 13:59 # +5
kegdan 28.05.2016 15:59 # +2
guesto 28.05.2016 18:43 # 0
gost 28.05.2016 14:15 # +2
Soul_re@ver 28.05.2016 16:50 # 0
Если это код для каких-нибудь сраных контроллеров, то может. Но в таком случае возникает вопрос о типе "c" и поведении этого кода. Плюс на портабельность в таком случае давно положен хуй и можно пользоваться знаниями о конкретной архитектуре.