Оптимизация компилятора Создание SYSCALL?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Оптимизация компилятора Создание SYSCALL?

Сообщение 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>

Изменить: я узнал, почему это происходит (см. Мой ответ ниже). Если у кого -то есть объяснение, почему компилятор ведет себя так, пожалуйста, поделитесь !!!>

Подробнее здесь: https://stackoverflow.com/questions/236 ... -a-syscall
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»