
Pavel
28.09.2018
14:40:45

Ruslan
28.09.2018
14:41:09
Угу. Помогает не нарушить никаких NDA, но и проблему обсудить
Чаще всего, пока этот пример пишешь, то и осознаешь, где профакапил :D

yuri
28.09.2018
14:54:25

Google

Ilia
28.09.2018
14:56:49

Pavel
28.09.2018
14:59:43

yuri
28.09.2018
15:00:58
проект под attiny, так что да, для gcc исключительно.

Ruslan
28.09.2018
15:01:07
https://en.cppreference.com/w/cpp/language/attributes

Pavel
28.09.2018
15:01:09

Ruslan
28.09.2018
15:02:14
В первую очередь не верь стеку :)
То есть года два уже как:)
http://clang.llvm.org/docs/LanguageExtensions.html#non-standard-c-11-attributes
Шланг не подавится
Про мелкософт не уверен

Pavel
28.09.2018
15:05:25

Ruslan
28.09.2018
15:06:26
Ничего-ничего. Встанешь по колено по самую шею в индусское слоновье данго и сможешь :)

Google

Ilia
28.09.2018
16:10:50

Pavel
28.09.2018
16:14:25

Roman
28.09.2018
18:11:29
Есть ли какой-нибудь кросплатформенный способ получить имя функции из указателя?
Играюсь тут с reflection, и понял что это большая проблема
Т.е. если в классе есть указатель на функцию, хочется найти эту функцию в AST

Pavel
28.09.2018
18:13:32
Попробовать питона?

Roman
28.09.2018
18:13:38
Единственный способ который нагуглил - собирать с -rdynamic и дальше backtrace_symbols(). Но это только linux
В MSVC есть похожее https://docs.microsoft.com/en-us/windows/desktop/debug/retrieving-symbol-information-by-address
Но может есть ли какая-нибудь кросплатформенная либа?

Alexander
28.09.2018
18:17:28

Roman
28.09.2018
18:17:50

Denis
28.09.2018
18:17:53

Roman
28.09.2018
18:18:37

Denis
28.09.2018
18:19:07

Roman
28.09.2018
18:20:08
Т.к. у лямбды нет имени, возможно её найти в принципе невозможно
Т.е. она не линкуется

Denis
28.09.2018
18:21:31

Roman
28.09.2018
18:22:17

Google

Евгений
28.09.2018
18:22:37

Roman
28.09.2018
18:22:56

Евгений
28.09.2018
18:23:02

Ruslan
28.09.2018
18:24:01

Roman
28.09.2018
18:24:16

Anton
28.09.2018
18:32:17

Roman
28.09.2018
18:33:15
А boost.stacktrace вам не подойдет?
Интересно. https://www.boost.org/doc/libs/1_65_1/doc/html/stacktrace/getting_started.html#stacktrace.getting_started.getting_function_information_fro
Надо пробовать

Евгений
28.09.2018
18:34:24
Короче, ребят, есть метод data_to_val_aux. Он используется в библиотеке только один раз, и он не статический.
[[gnu::always_inline]]
value_t
inline __attribute__((always_inline))
data_to_val_aux(size_t index, size_t swath_length)
{...}
Он в цикле вызывается много раз (538 229 983).
Я измеряю время выполнения, это где-то 9.3 секунд.
Флаги компиляции: -mtune=native -march=native -mavx2 -pipe -g -O3 -DNDEBUG. Вот эти флаги пробовал выключать и включать: -fearly-inlining -finline-limit=10000000 -funit-at-a-time.
Теперь я беру, и руками делаю инлайн этого метода. Результат - 5.4 секунды. Собственно вопрос: как сделать так, что бы инлайн работал?

Alexander
28.09.2018
18:34:34

Denis
28.09.2018
18:34:53

Anton
28.09.2018
18:35:12

Roman
28.09.2018
18:35:55
Интересно, что boost::stacktrace выведет в случае лямбды )

Alexander
28.09.2018
18:35:56

Anton
28.09.2018
18:38:52

Roman
28.09.2018
18:39:47
А для обычных символов достаточно собрать с -rdynamic

Alexander
28.09.2018
18:40:26

Roman
28.09.2018
18:42:39

Anton
28.09.2018
18:44:10

Google

Anton
28.09.2018
18:45:10

Pavel
28.09.2018
18:47:09
Всё же мне кажется, задача решается неподобающим образом, или выбран не тот язык.

Roman
28.09.2018
18:47:28

Alexander
28.09.2018
18:48:19
?

Roman
28.09.2018
18:48:49

Alexander
28.09.2018
18:49:11

Pavel
28.09.2018
18:49:56

Roman
28.09.2018
18:50:37
Ну да, зоопарк. Но синтез железа из c++ много где используется

Alex Фэils?︙
28.09.2018
19:07:51

Ilia
28.09.2018
19:27:14

Roman
28.09.2018
19:27:58

Ilia
28.09.2018
19:29:07


Евгений
28.09.2018
19:33:24
А что внутри функции то?
https://github.com/scanmem/scanmem/blob/master/targetmem.h#L257
Правда я переписываю на с++, но функция не изменилась вообще. Только как метод её сделал для 'swath'

Ilia
28.09.2018
19:37:02
Вопрос лишь в том где взять этот список функций :)
Да нет их
Во-первых ты сейчас видишь после rdynamic лишь список глобальных и экспортируемых функций.
Статические и неглобальные - нет.
Во-вторых,
Блин не знаю уже что во вторых, но какие-то жопы ещё найдутся .
В общем это тете надо что-то типа плагина к костру писать

Google

Ilia
28.09.2018
19:38:59
Там много букв

Евгений
28.09.2018
19:39:36
Если её в коде заинлайнить, т.е. её вызов заменить на её содержимое, то производительность увеличится. И ещё заметил, что с флагом О2 быстрее

Alexander
28.09.2018
19:42:45

Евгений
28.09.2018
19:43:17

Ilia
28.09.2018
19:43:30

Alexander
28.09.2018
19:43:34
Но не находить call в асме - сильно :)