|
|
|
ААААА!!! Вы это видели???
|
|||
|---|---|---|---|
|
#18+
Надо так понимать, что надо учить Il ассемблер? и проверять, чего оно там накомпилило? Море излечило меня от Джихада...(с) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2007, 20:19:16 |
|
||
|
ААААА!!! Вы это видели???
|
|||
|---|---|---|---|
|
#18+
maXmo http://gcc.gnu.org/ml/gcc/2007-10/msg00266.html жесть.И что тебя так развеселило? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2007, 23:42:52 |
|
||
|
ААААА!!! Вы это видели???
|
|||
|---|---|---|---|
|
#18+
Оптимизации зло? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2007, 09:48:52 |
|
||
|
ААААА!!! Вы это видели???
|
|||
|---|---|---|---|
|
#18+
Akh wrote: > Оптимизации зло? Причем тут оптимизации? Дело в программистах. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2007, 10:16:29 |
|
||
|
ААААА!!! Вы это видели???
|
|||
|---|---|---|---|
|
#18+
terasПричем тут оптимизации? Дело в программистах. Я бы не был сразу так катигоричен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2007, 10:21:59 |
|
||
|
ААААА!!! Вы это видели???
|
|||
|---|---|---|---|
|
#18+
Akh wrote: > teras > Причем тут оптимизации? Дело в программистах. > > > Я бы не был сразу так катигоричен. Почему? Программисты вообще склонны считать свои ошибки глюками компилятора. А после исправления ошибки в этой программе gcc генерирует вполне ожидаемый код: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2007, 10:29:28 |
|
||
|
ААААА!!! Вы это видели???
|
|||
|---|---|---|---|
|
#18+
teras Почему? Программисты вообще склонны считать свои ошибки глюками компилятора. А после исправления ошибки в этой программе gcc генерирует вполне ожидаемый код: Каков код Си без ошибки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2007, 10:33:10 |
|
||
|
ААААА!!! Вы это видели???
|
|||
|---|---|---|---|
|
#18+
Akh wrote: > Автор: "Akh" > teras > > Почему? Программисты вообще склонны считать свои ошибки глюками > компилятора. А после исправления ошибки в этой программе gcc генерирует > вполне ожидаемый код: > > > > Каков код Си без ошибки? Код: plaintext An object that has volatile-qualified type may be modified in ways unknown to the implementation or have other unknown side effects. Therefore any expression referring to such an object shall be evaluated strictly according to the rules of the abstract machine, as described in 5.1.2.3. Furthermore, at every sequence point the value last stored in the object shall agree with that prescribed by the abstract machine, except as modified by the unknown factors mentioned previously. What constitutes an access to an object that has volatile-qualified type is implementation-defined. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2007, 10:42:14 |
|
||
|
ААААА!!! Вы это видели???
|
|||
|---|---|---|---|
|
#18+
teras Код: plaintext 1. 2. 3. 4. 5. 6. 7. An object that has volatile-qualified type may be modified in ways unknown to the implementation or have other unknown side effects. Therefore any expression referring to such an object shall be evaluated strictly according to the rules of the abstract machine, as described in 5.1.2.3. Furthermore, at every sequence point the value last stored in the object shall agree with that prescribed by the abstract machine, except as modified by the unknown factors mentioned previously. What constitutes an access to an object that has volatile-qualified type is implementation-defined. Posted via ActualForum NNTP Server 1.4 Здесь, под неизвесными реализации факторами измения переменной понимается, в основном изменения данных, например, системой (таймер какой-нибудь) или другими программами, а не самой программой. Если так мыслить, то все объекты, используемые несколькими потоками надо будет специфицировать volatile. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2007, 10:50:26 |
|
||
|
ААААА!!! Вы это видели???
|
|||
|---|---|---|---|
|
#18+
Akh wrote: > > > Здесь, под неизвесными реализации факторами измения переменной > понимается, в основном изменения данных, например, системой (таймер > какой-нибудь) или другими программами, а не самой программой. Если так > мыслить, то все объекты, используемые несколькими потоками надо будет > специфицировать volatile. Обязательно, если не можете обеспечить защищенность от побочных модификаций другими способами, в противном случае компилятор генерирует эквивалентный код, которй далеко не всегда работает в потоках. Под side effect понимается *любое* изменение данных помимо вне указанного контекста. В частности и таймер, и система, и другие потоки. По той причине, что взаимодействие, или даже наличие, потоков просто не оговаривается в стандарте. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2007, 11:03:35 |
|
||
|
ААААА!!! Вы это видели???
|
|||
|---|---|---|---|
|
#18+
White OwlИ что тебя так развеселило?безусловная запись. Ожидаемое поведение – генерация кода с джампом. А тут такой перл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2007, 11:08:31 |
|
||
|
ААААА!!! Вы это видели???
|
|||
|---|---|---|---|
|
#18+
teras Обязательно, если не можете обеспечить защищенность от побочных модификаций другими способами, в противном случае компилятор генерирует эквивалентный код, которй далеко не всегда работает в потоках. Под side effect понимается *любое* изменение данных помимо вне указанного контекста. В частности и таймер, и система, и другие потоки. По той причине, что взаимодействие, или даже наличие, потоков просто не оговаривается в стандарте. Не, знаю, все как-то не явно. Нашел про volatile здесь . Во всяком случае, мой 3.3.3 компилирует одинаково нормально в обоих случаях. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2007, 11:38:01 |
|
||
|
ААААА!!! Вы это видели???
|
|||
|---|---|---|---|
|
#18+
Поигрался с этим исходником, и так и не смог повторить описаный глюк. Пробовал в С и С++ режимах в 3.4.2 на Win x86 и в 4.1.2 на AIX. Кто сумел получить "безусловную запись"? Похвастайтесь своей версией компилятора и платформой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2007, 16:27:42 |
|
||
|
ААААА!!! Вы это видели???
|
|||
|---|---|---|---|
|
#18+
возможно, нужен 4.* на х86 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2007, 16:29:38 |
|
||
|
ААААА!!! Вы это видели???
|
|||
|---|---|---|---|
|
#18+
Akh wrote: > > Не, знаю, все как-то не явно. Нашел про volatile здесь > <http://www.find-info.ru/doc/cpp/002/volatile.htm>. Непонятно, откуда документация. Подозреваю, что ноги у нее растут еще из MSDOS. Почитай что-нибудь посвежее, например для MSVC: The volatile type qualifier declares an item whose value can legitimately be changed by something beyond the control of the program in which it appears, such as a *concurrently executing thread*. > Во всяком случае, мой 3.3.3 компилирует одинаково нормально в обоих случаях. У меня mingw 3.4, а компилировать нужно для i686 (до него cmov просто не поддерживался): gcc -O1 -march=i683 Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2007, 16:55:55 |
|
||
|
ААААА!!! Вы это видели???
|
|||
|---|---|---|---|
|
#18+
terasа компилировать нужно для i686 (до него cmov просто не поддерживался): gcc -O1 -march=i683О! Точно. Но на мой взгляд это не очень страшный глюк. Во первых, в исходнике действительно должно стоять volatile. Во вторых, этот глюк появляется только на одной единственной платформе... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2007, 17:13:58 |
|
||
|
ААААА!!! Вы это видели???
|
|||
|---|---|---|---|
|
#18+
White Owl wrote: > teras > а компилировать нужно для i686 (до него cmov просто не поддерживался): > gcc -O1 -march=i683 > > О! Точно. > Но на мой взгляд это не очень страшный глюк. Во первых, в исходнике > действительно должно стоять volatile. Во вторых, этот глюк появляется > только на одной единственной платформе... И в третих - это и не глюк вовсе... ;-) Кстати, достаточно i686 популярная платформа сейчас. Под i[345]83 смысла особого компилировать нет - таких машин уже не найдешь. Я, как поставил gentoo года два назад, так сразу и включил i686. Работает. И с gcc 3.x и с gcc 4.x. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2007, 17:51:26 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=34903619&tid=2027895]: |
0ms |
get settings: |
11ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
200ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
| others: | 208ms |
| total: | 519ms |

| 0 / 0 |
