Я собираю довольно сложное приложение в двух режимах: отладка и выпуск. Основное отличие, как я вижу, состоит в том, что -O0 против -O3 (я могу предоставить соответствующую часть Makefile, если это необходимо). Я стараюсь избегать генерации Syscall как можно больше, так как я моделирую это приложение в режиме эмуляции Syscall (внизу ОС не работает). Проблема, которую у меня в настоящее время возникает в том, что в режиме выпуска компилятор генерирует дополнительный Socket Syscall, который я предпочитаю не произойти (и который не происходит в режиме отладки). < /p>
Причина, по которой я думаю, что сокет может быть создан, заключается в том, что я использую Pthreads, и две мои потоки общаются через нестабильный Char*. Так что я предполагаю, что, может быть, компилятор пытается реализовать его причудливым способом, когда я устанавливаю флаг -O3? Но я не уверен, является ли это разумное предположение. < /P>
Возможно ли, чтобы Syscall генерируется из -за -O3 флаг? (не имеет слишком большого смысла) />
Редактировать: CTW Код находится в C и C ++ < /p>
Редактировать: код статически связан с следующими общими библиотеками: < /p >
libstdc++.a
libm.a
libglib-2.0.a
-static-libgcc
*special pthreads library*
< /code>
Кроме того, я обнаружил, где в двоичном вызове происходит: < /p>
8c716: db28 blt.n 8c76a
8c718: f8d9 1008 ldr.w r1, [r9, #8]
8c71c: 4620 mov r0, r4
8c71e: 2200 movs r2, #0
8c720: f441 2100 orr.w r1, r1, #524288 ; 0x80000
8c724: f001 e97c blx 8da20
8c728: 4b20 ldr r3, [pc, #128] ; (8c7ac )
8c72a: 681b ldr r3, [r3, #0]
8c72c: f8c9 0004 str.w r0, [r9, #4]
8c730: b943 cbnz r3, 8c744
8c732: 1c43 adds r3, r0, #1
< /code>
Изменить: я узнал, почему это происходит (см. Мой ответ ниже). Если у кого -то есть объяснение, почему компилятор ведет себя так, пожалуйста, поделитесь !!!>
Подробнее здесь: https://stackoverflow.com/questions/236 ... -a-syscall
Оптимизация компилятора Создание SYSCALL? ⇐ C++
Программы на C++. Форум разработчиков
1739476565
Anonymous
Я собираю довольно сложное приложение в двух режимах: отладка и выпуск. Основное отличие, как я вижу, состоит в том, что -O0 против -O3 (я могу предоставить соответствующую часть Makefile, если это необходимо). Я стараюсь избегать генерации Syscall как можно больше, так как я моделирую это приложение в режиме эмуляции Syscall (внизу ОС не работает). Проблема, которую у меня в настоящее время возникает в том, что в режиме выпуска компилятор генерирует дополнительный Socket Syscall, который я предпочитаю не произойти (и который не происходит в режиме отладки). < /p>
Причина, по которой я думаю, что сокет может быть создан, заключается в том, что я использую Pthreads, и две мои потоки общаются через нестабильный Char*. Так что я предполагаю, что, может быть, компилятор пытается реализовать его причудливым способом, когда я устанавливаю флаг -O3? Но я не уверен, является ли это разумное предположение. < /P>
Возможно ли, чтобы Syscall генерируется из -за -O3 флаг? (не имеет слишком большого смысла) />
Редактировать: CTW Код находится в C и C ++ < /p>
Редактировать: код статически связан с следующими общими библиотеками: < /p >
libstdc++.a
libm.a
libglib-2.0.a
-static-libgcc
*special pthreads library*
< /code>
Кроме того, я обнаружил, где в двоичном вызове происходит: < /p>
8c716: db28 blt.n 8c76a
8c718: f8d9 1008 ldr.w r1, [r9, #8]
8c71c: 4620 mov r0, r4
8c71e: 2200 movs r2, #0
8c720: f441 2100 orr.w r1, r1, #524288 ; 0x80000
8c724: f001 e97c blx 8da20
8c728: 4b20 ldr r3, [pc, #128] ; (8c7ac )
8c72a: 681b ldr r3, [r3, #0]
8c72c: f8c9 0004 str.w r0, [r9, #4]
8c730: b943 cbnz r3, 8c744
8c732: 1c43 adds r3, r0, #1
< /code>
Изменить: я узнал, почему это происходит (см. Мой ответ ниже). Если у кого -то есть объяснение, почему компилятор ведет себя так, пожалуйста, поделитесь !!!>
Подробнее здесь: [url]https://stackoverflow.com/questions/23639449/compiler-optimization-creating-a-syscall[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия