Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Call stack, assembler listing
|
|||
|---|---|---|---|
|
#18+
Старина Торвальдс разразился кирпичами по поводу GCC. Вот такие дела. Что такое "вытеснение константы" - я честно говоря не понял. Кто знает - прошу прояснить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2016, 00:33 |
|
||
|
Call stack, assembler listing
|
|||
|---|---|---|---|
|
#18+
maytonСтарина Торвальдс разразился кирпичами по поводу GCC. Вот такие дела. Что такое "вытеснение константы" - я честно говоря не понял. Кто знает - прошу прояснить. move $load_balance_mask, -136(%rbp) #, %sfp $load_balance_mask это видимо константа, надо в исходники смотреть ее не надо в стек записывать, а надо непосредственно использовать $load_balance_mask в ассемблерных командах ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2016, 00:54 |
|
||
|
Call stack, assembler listing
|
|||
|---|---|---|---|
|
#18+
а ну да вот Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. должно было быть move $load_balance_mask,%rax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2016, 01:16 |
|
||
|
Call stack, assembler listing
|
|||
|---|---|---|---|
|
#18+
тоесть movq $load_balance_mask,%rax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2016, 01:16 |
|
||
|
Call stack, assembler listing
|
|||
|---|---|---|---|
|
#18+
maytonСтарина Торвальдс разразился кирпичами по поводу GCC. Вот такие дела. Что такое "вытеснение константы" - я честно говоря не понял. Кто знает - прошу прояснить. Вообще-то он года два назад разразился на эту тему Если это что-то новое, то для приличия не мешало бы ссылку на то что просите прокомментировать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2016, 01:58 |
|
||
|
Call stack, assembler listing
|
|||
|---|---|---|---|
|
#18+
Ага точно. От 2014 года. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2016, 08:36 |
|
||
|
Call stack, assembler listing
|
|||
|---|---|---|---|
|
#18+
Новый Года ну да вот Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. должно было быть move $load_balance_mask,%rax По моему ошибка не в этом, а в movq %r8, -200(%rbp) Т.к под локальные переменные выделено меньше: subq $184, %rsp Но да, баян. Хотя повторюсь про укуренный компилятор ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2016, 16:05 |
|
||
|
Call stack, assembler listing
|
|||
|---|---|---|---|
|
#18+
Siemargl, а я вот посмотрел на асм-сорцы которые генерит gcc для Card-Rayrtracer и остался очень доволен. Там кругом одни xmm регисты а я хотел лезть туда грязными руками и форсировать оптимизацию векторного умножения. Ха... наивняк... Хотя возможно руку можно приложить. Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2016, 16:25 |
|
||
|
Call stack, assembler listing
|
|||
|---|---|---|---|
|
#18+
mayton, XMM тоже медленные операции, AVX быстрее, хотя тут компилятор справится с выбором. На stackoverflow пробегало сравнение в 500 раз разницы. А вот руку надо прикладывать, чтобы параллельно несколько трасс считать. Компилятор сам этого не сделает, руками надо по другому циклы организовывать было. В такую параллелизацию компилятором я пока не верю для нетривиальных случаев. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2016, 17:00 |
|
||
|
Call stack, assembler listing
|
|||
|---|---|---|---|
|
#18+
Siemargl, кажется эту штуку я ищу FMA (Fused-Multiply-Add) http://stackoverflow.com/questions/15933100/how-to-use-fused-multiply-add-fma-instructions-with-sse-avx ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2016, 17:36 |
|
||
|
Call stack, assembler listing
|
|||
|---|---|---|---|
|
#18+
maytonSiemargl, кажется эту штуку я ищу FMA (Fused-Multiply-Add) http://stackoverflow.com/questions/15933100/how-to-use-fused-multiply-add-fma-instructions-with-sse-avx Да, с подобным поведением я тоже сталкивался. Суть проблемы - чтобы не допустить ошибку округления даже порядка 1E-7, компилятор обычно генерит интрисинк функцию, которая считает медленнее раз в 50. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2016, 17:49 |
|
||
|
Call stack, assembler listing
|
|||
|---|---|---|---|
|
#18+
SiemarglНовый Года ну да вот Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. move $load_balance_mask,%rax По моему ошибка не в этом, а в movq %r8, -200(%rbp) Т.к под локальные переменные выделено меньше: subq $184, %rsp Но да, баян. Хотя повторюсь про укуренный компилятор ) туда можно писать, 128 байт за stack pointer авторThe red-zone is a feature described in the x86-64 ABI. It is a 128 byte long region located directly below the stack pointer. This region is free-for-use for the compiler without the requirement to notify the application / the os or any running interrupt handler. For user applications there is no issue as interrupts and other kernel related code won't interfere with the user stack. In your kernel however things can get ugly, especially so if you have nested interrupts and no red-zone support. Imagine running inside your interrupt handler, gcc puts some data inside the red zone, a nested interrupt occurs and clobbers the red-zone or vice versa. To get around this the red-zone can be disabled by passing -mno-red-zone to GCC. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2016, 22:04 |
|
||
|
Call stack, assembler listing
|
|||
|---|---|---|---|
|
#18+
Тогда в коде вообще нет ошибки, если только это крайняя (leaf) функция. Ясно, https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61904 - это ядро и в нем нельзя использовать red zone Вот пример использования и неиспользования http://stackoverflow.com/questions/13201644/why-does-the-x86-64-gcc-function-prologue-allocate-less-stack-than-the-local-var Кстати, это уже с оптимизацией -О1 и код по прежнему ужасен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2016, 23:09 |
|
||
|
Call stack, assembler listing
|
|||
|---|---|---|---|
|
#18+
а где ассемлерные директивы описаны? вот эти .cfi_startproc .cfi_def_cfa_offset 16 .cfi_def_cfa_register 6 или вот это: автор196 .weak _ZTV1B 197 .section .rodata._ZTV1B,"aG",@progbits,_ZTV1B,comdat 198 .align 32 199 .type _ZTV1B, @object 200 .size _ZTV1B, 40 201 _ZTV1B: 202 0000 00000000 .quad 0 202 00000000 203 0008 00000000 .quad _ZTI1B 203 00000000 204 0010 00000000 .quad _ZN1B3fooEv 204 00000000 205 0018 00000000 .quad _ZN1BD1Ev 205 00000000 206 0020 00000000 .quad _ZN1BD0Ev 206 00000000 я понимаю, что последнее -- это табличка виртуальных функций но вот читать несколько напряжно когда слов не знаешь туториал бы какой ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2016, 23:55 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=39260031&tid=2018495]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
49ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 295ms |
| total: | 430ms |

| 0 / 0 |
