На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Перед отправкой сообщения внимательно прочтите правила раздела!!!
1. Запрещается обсуждать написание вирусов, троянов и других вредоносных программ!
2. Помните, что у нас есть FAQ раздела Assembler и Полезные ссылки. Посмотрите, возможно, там уже имеется решение вашего вопроса.

3. Настоятельно рекомендуем обратить особое внимание на правила форума, которые нарушаются чаще всего:
  3.1. Заголовок темы должен кратко отражать её суть. Темы с заголовками типа "Срочно помогите!" или "Ассемблер" будут отправляться в Корзину для мусора.
  3.2. Исходники программ обязательно выделяйте тегами [code]...[/code] (одиночные инструкции можно не выделять).
  3.3. Нежелательно поднимать старые темы (не обновлявшиеся более года) без веской на то причины.

Не забывайте также про главные Правила форума!

Добро пожаловать и приятного вам общения!!! ;)
 
Модераторы: Jin X, Qraizer
  
> _InterlockedAnd
    Заметил во что превращается вызов _InterlockedAnd компилятором C++:
    ExpandedWrap disabled
          int z = _InterlockedAnd(&a, 10);
      000000013F901039  lea         rax,[a]  
      000000013F90103E  mov         qword ptr [rsp+38h],rax  
      000000013F901043  mov         rax,qword ptr [rsp+38h]  
      000000013F901048  prefetchw   [rax]  
      000000013F90104B  mov         rcx,qword ptr [rsp+38h]  
      000000013F901050  mov         eax,dword ptr [rcx]  
      000000013F901052  mov         edx,eax  
      000000013F901054  and         edx,0Ah  
      000000013F901057  mov         rcx,qword ptr [rsp+38h]  
      000000013F90105C  mov         rcx,qword ptr [rsp+38h]  
      000000013F901061  lock cmpxchg dword ptr [rcx],edx  
      000000013F901065  jne         wmain+42h (13F901052h)  
      000000013F901067  mov         dword ptr [z],eax

    Вопрос - зачем выделенная жирным повторенная строчка?
      Цитата ANDLL @
      Вопрос - зачем выделенная жирным повторенная строчка?

      Незачем, также как и все 5 бестолковых строк копирования rax в стек и затем из стека опять в rax и трижды (?!) в rcx - достаточно одного mov rcx,rax
        leo, там первый параметр volatile*, поэтому и не оптимизируется. Впрочем, да, даже в этом случае можно оптимизировать сам указать.
        1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0,0172 ]   [ 14 queries used ]   [ Generated: 21.05.24, 11:31 GMT ]