автоуказатели

Тема в разделе "LANGS.C", создана пользователем maksim_, 26 окт 2009.

  1. Ustus

    Ustus New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2005
    Сообщения:
    834
    Адрес:
    Харьков
    Вообще-то эта опция (-mno-inline-all-stringops) юзается по умолчанию. Если указать -m-inline-all-stringops, то получим что-то вроде
    Код (ASM):
    1.     pushl   %ebp
    2.     cld
    3.     movl    %esp, %ebp
    4.     pushl   %edi
    5.     movl    8(%ebp), %edx
    6.     movl    $4, %ecx
    7.     movl    16(%ebp), %edi
    8.     movw    $0, (%edx)
    9.     movl    12(%ebp), %eax
    10.     movl    $1024, %edx
    11.     movl    $0, (%eax)
    12.     xorl    %eax, %eax
    13.     rep
    14.     stosl
    15.     movl    20(%ebp), %edi
    16.     testl   $1, %edi
    17.     je  L2
    18.     movb    $0, (%edi)
    19.     movl    $1023, %edx
    20.     incl    %edi
    21. L2:
    22.     testl   $2, %edi
    23.     je  L3
    24.     movw    $0, (%edi)
    25.     subl    $2, %edx
    26.     addl    $2, %edi
    27. L3:
    28.     testl   $4, %edi
    29.     je  L4
    30.     movl    $0, (%edi)
    31.     subl    $4, %edx
    32.     addl    $4, %edi
    33. L4:
    34.     cld
    35.     movl    %edx, %ecx
    36.     shrl    $2, %ecx
    37.     rep
    38.     stosl
    39.     testb   $2, %dl
    40.     movl    %edi, %eax
    41.     je  L5
    42.     movw    $0, (%edi)
    43.     addl    $2, %eax
    44. L5:
    45.     testb   $1, %dl
    46.     je  L1
    47.     movb    $0, (%eax)
    48. L1:
    49.     popl    %edi
    50.     popl    %ebp
    51.     ret
    без call, но все с тем же проклятущим stosl.
    (подозрительным голосом) А так ли хорошо вы знаете компилятор, как пытаетесь на меня наехать? :):):)
     
  2. cupuyc

    cupuyc New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    763
    если цитируете, то цитируйте целиком всю фразу, а не вырывайте из кнтекста:

    чтобы знать как всё это работает. в противном случае, начнут вылазить баги непонятно откуда.
     
  3. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    cupuyc
    а что разве смысл не тот?
    не может такого быть у адекватной промышленной либы, а только у ишаков бенгальских :))
    закрывайте тему!
     
  4. cupuyc

    cupuyc New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    763
    да. второй такой-же. смысл такой:
    я пишу прогу. толком не умею работать авто птрами или с чем-либо ещё. взял авто птры из сторонней либы. где-то неправильно освободил указатель или неправильно что-то присвоил или..., в итоге получил эксепшн в другом месте программы и не понимаю откуда этот эксепшн вылез. при чём тут разработчики stl???
    я не умею программировать - поэтому и задаю вопрос на форуме. я ни в коем случае не хочу оскарбить разработчиков stl, atl или чего бы там ни было. я хочу увидеть дискуссию чтобы принять для себя окончательное решение. все мои посты нужно так подробно расписывать?
     
  5. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    cupuyc
    каждый может что-то ляпнуть не подумав, но зачем отпираться от этого?
    в твоей формулировке ты их на 0 помножил и никакой многозначности..
    согласись что ляпнул и всё, ничего страшного. так сказать "не удачно сформулировал".
    поизучай сорсы стл, а если что не понравиться, подделай под себя :)
    есть куча хороших доков по стл на великом и могучем ,что бы правильно её использовать.
    если надо, пиши в личку, т.к. здесь варез запрещён, выложу :)
     
  6. cupuyc

    cupuyc New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    763
    вот именно - зачем меня оскарблять, недочитав/непоняв, мой пост. никаких прямых оскарблений я никому не предъявлял - так что и не надо было разводить всю эту болтавню. есть на васме такой народ - хлебом не корми - дай какую-нибудь гадость написать: вот, какие тупые участники форума, какие тупые вопросы, закрыть тему и т.д.
     
  7. cupuyc

    cupuyc New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    763
    что касается посмотреть - я конечно же посмотрю. но Вы совершенно не читаете сообщения, перед тем, как отвечать:

     
  8. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    cupuyc
    так это про то , за кого Вы их держите, а про Вас ни слова.
    делайте как хотите, мне уже пофигу :)
     
  9. J0E

    J0E New Member

    Публикаций:
    0
    Регистрация:
    28 июл 2008
    Сообщения:
    621
    Адрес:
    Panama
    Код (Text):
    1. ; 134  : {
    2.  
    3.     push    esi
    4.  
    5. ; 135  :   std::auto_ptr<int> p ( new int );
    6.  
    7.     mov esi, 1147431726             ; 44646b2eH
    8.     push    esi
    9.     push    4
    10.     push    1
    11.     call    DWORD PTR __imp__ExAllocatePoolWithTag@12
    12.  
    13. ; 136  : }
    14.  
    15.     test    eax, eax
    16.     je  SHORT $LN19@foo
    17.     push    esi
    18.     push    eax
    19.     call    DWORD PTR __imp__ExFreePoolWithTag@8
    20. $LN19@foo:
    21.     pop esi
    22.     ret 0
     
  10. J0E

    J0E New Member

    Публикаций:
    0
    Регистрация:
    28 июл 2008
    Сообщения:
    621
    Адрес:
    Panama
    А если исходный код я меняю на такой
    Код (Text):
    1. void foo()
    2. {
    3.   std::auto_ptr<int> p ( new int );
    4.   std::auto_ptr<int> p2;
    5. }
    то ассемблерный не меняется :)