- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
#define OP(a,b,op) ((a)op(b))
#define MKFUNC_a_op_b(type, opname, op) void type##_##opname##_##type(const void *a, const void *b, void *out) \
{\
type tmp = OP(*(type*)a,*(type*)b,op);\
memcpy(out,(void*)(&tmp),sizeof(type));\
}
#define MKALLF_int(type) \
MKFUNC_a_op_b(type,plus,+) MKFUNC_a_op_b(type,minus,-) \
MKFUNC_a_op_b(type,div,/) MKFUNC_a_op_b(type,mod,%) \
MKFUNC_a_op_b(type,and,&) MKFUNC_a_op_b(type,or,|) \
MKFUNC_a_op_b(type,xor,^)
MKALLF_int(int8_t)
MKALLF_int(uint8_t)
MKALLF_int(int16_t)
MKALLF_int(uint16_t)
MKALLF_int(int32_t)
MKALLF_int(uint32_t)
MKALLF_int(int64_t)
MKALLF_int(uint64_t)
#define MKFUNC_conv_t(type1, type2) void type1##_to_##type2(const void *a, void *out) \
{\
type2 tmp = (type2)(*(type1*)a);\
memcpy(out,(void*)(&tmp),sizeof(type2));\
}
#define MKFUNC_con_M(type) \
MKFUNC_conv_t(type, int8_t) \
MKFUNC_conv_t(type, uint8_t) \
MKFUNC_conv_t(type, int16_t) \
MKFUNC_conv_t(type, uint16_t) \
MKFUNC_conv_t(type, int32_t) \
MKFUNC_conv_t(type, uint32_t) \
MKFUNC_conv_t(type, int64_t) \
MKFUNC_conv_t(type, uint64_t)
MKFUNC_con_M(int8_t)
MKFUNC_con_M(uint8_t)
MKFUNC_con_M(int16_t)
MKFUNC_con_M(uint16_t)
MKFUNC_con_M(int32_t)
MKFUNC_con_M(uint32_t)
MKFUNC_con_M(int64_t)
MKFUNC_con_M(uint64_t)
Это я типа такую заготовку для стековой ВМ делаю, определяю операции(инструкции) для опкодов кагбэ. Потом у меня там будет массив указателей на функции, ну и я их буду вызывать, пропихивая аргументы. Но похоже что сишный препроцессор это говно полное, и надо кодогеренератор для набора такой ерунды делать.
j123123 02.02.2016 11:43 # 0
guest 02.02.2016 13:26 # −1
_______
/ \
| кеш |
\_______/
j123123 02.02.2016 14:00 # +2
Antervis 02.02.2016 13:35 # +2
bormand 02.02.2016 17:14 # +2
В идеальной программе заинлайнены все функции и заанроллены все циклы.
j123123 02.02.2016 23:20 # +5
roman-kashitsyn 03.02.2016 09:51 # +4
В царских программах нету анскильной рекурсии, они работают за O(1/N).
bormand 03.02.2016 17:17 # +1
Данные обрабатывают себя и своих соседей. Чем больше данных - тем быстрее.
dxd 03.02.2016 20:51 # 0
inkanus-gray 04.02.2016 00:43 # +5
3_dar 04.02.2016 18:24 # 0
roman-kashitsyn 26.08.2018 22:45 # 0
The copy function behaves as if it had O(1/n) complexity on the copy . add composition.
https://medium.com/@maiavictor/some-functions-may-have-negative-complexity-im-worried-for-my-crypto-c53f6e7343d3
WUT?!
bormand 27.08.2018 01:10 # 0
bormand 27.08.2018 01:23 # 0
roman-kashitsyn 27.08.2018 01:25 # 0
Да это понятно. Просто сам факт контринтуитивен.
bormand 27.08.2018 01:39 # 0
MediumGovno 01.08.2021 10:49 # 0
bormand 02.02.2016 17:26 # 0
j123123 02.02.2016 18:22 # −1
bormand 02.02.2016 18:28 # 0