Приколы компилятора VS C++

Тема в разделе "WASM.HEAP", создана пользователем Neonix, 22 июл 2010.

  1. IceCrashLdr

    IceCrashLdr New Member

    Публикаций:
    0
    Регистрация:
    29 июн 2010
    Сообщения:
    193
    __asm {

    int 3
    __emit 0x3E
    __emit 0xC5
    __emit 0x3F

    int 3
    __emit 0xC5
    __emit 0xBF //0xC0 diStorm бага.
    __emit 0x00
    __emit 0x00
    __emit 0x00
    __emit 0x00
    }

    VS, OllyDbg, IDA pro кто будте прав?
     
  2. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    Neonix
    ну и какой коммерческий реверс после этого? в crazy список минимум )
    ты начнёш брать на себя посильные задачи?
     
  3. Neonix

    Neonix New Member

    Публикаций:
    0
    Регистрация:
    2 май 2009
    Сообщения:
    839
    wsd
    обыкновенный реверс не требует каких-то сверх знаний. это дело навыка. я Вам об этом уже говорил. не смейтесь надо мной=)
     
  4. W4FhLF

    W4FhLF New Member

    Публикаций:
    0
    Регистрация:
    3 дек 2006
    Сообщения:
    1.050
    Что тут такое вообще написано? Какая-то непонятная мысль. Что такое Stack? std::stack? Тогда откуда return _stack.pop? метод stack::pop ничего не возвращает. Сам stack реализуется через другой контейнер std::deque. В отладчике нет никакой ошибки. std::stack реализует очередь по правилам LIFO, следовательно если туда запихнуть n элементов а потом с вершщины стека удалить два элемента, то последним удалённым будет n-1. Где ошибка?
     
  5. Neonix

    Neonix New Member

    Публикаций:
    0
    Регистрация:
    2 май 2009
    Сообщения:
    839
    W4FhLF
    Ну, для начала не будем путать хрен с маслом. Я про Сшарп, а Вы мне про приплюснутый С. Всё на пальцах расписано. Если хотите я вам исходник дам.
     
  6. KeSqueer

    KeSqueer Сергей

    Публикаций:
    0
    Регистрация:
    19 июл 2007
    Сообщения:
    1.183
    Адрес:
    Москва
    А она не должна выполняться когда вы её явно вызываете? С какой стати конструкция _stack.Pop() должна
     
  7. KeSqueer

    KeSqueer Сергей

    Публикаций:
    0
    Регистрация:
    19 июл 2007
    Сообщения:
    1.183
    Адрес:
    Москва
    Наверное вы перепутали Pop и Top
     
  8. Neonix

    Neonix New Member

    Публикаций:
    0
    Регистрация:
    2 май 2009
    Сообщения:
    839
    KeSqueer
    Какие ещё топы нафиг? не то..

    не "конструкция _stack.Pop()", а конструкция "public static Int32 StackItem {get {return _stack.Pop();}}". Все отлично работает(чего не скажешь об отладчике VS), но конечно Вам видней.

    В дальнейшем все вопросы не по теме очень прошу задавать через Личные Сообщения.
     
  9. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Neonix
    Вы ещё примеры VB приведите. Какой нахрен нативный дизасм для С#?
     
  10. Neonix

    Neonix New Member

    Публикаций:
    0
    Регистрация:
    2 май 2009
    Сообщения:
    839
    Booster
    О Боги!! Я десять раз сказал что не дизасм, а отладчик!!!
    ЗЫ:трудно...
     
  11. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Neonix
    Что в теме по С++ делает С#. Как мы должны сие понимать? С тобой трудно.
     
  12. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Приведи минимально рабочий код, который по твоему косячит, тогда и будет повод обсудить. А пока это всё выпендрёж и школота.
     
  13. Neonix

    Neonix New Member

    Публикаций:
    0
    Регистрация:
    2 май 2009
    Сообщения:
    839
    Booster
    Вот и я о том же, хватит уже писками мериться.
    вот код:
    Код (Text):
    1. namespace DebuggerTest
    2. {
    3.     class Program
    4.     {
    5.         private static Stack<Int32> _stack = new Stack<Int32>();
    6.        
    7.         public static Int32 StackItem
    8.         {
    9.             get
    10.             {
    11.                 return _stack.Pop();
    12.             }
    13.         }
    14.  
    15.        
    16.         static void Main(string[] args)
    17.         {
    18.  
    19.             _stack.Push(1);
    20.             _stack.Push(2);
    21.             _stack.Push(3);
    22.             _stack.Push(4);
    23.             _stack.Push(5);
    24.            
    25.             Int32 i = _stack.Pop();
    26.  
    27.             try
    28.             {
    29.                 Console.WriteLine(StackItem);
    30.             }
    31.             catch (Exception ex)
    32.             {
    33.                 Console.WriteLine(ex.ToString());
    34.             }
    35.         }
    36.     }
    37. }
     
  14. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    И чего тут дебагер показывает не того?
     
  15. W4FhLF

    W4FhLF New Member

    Публикаций:
    0
    Регистрация:
    3 дек 2006
    Сообщения:
    1.050
    Да, дебаггер ведёт себя странно. :)
     
  16. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    У меня всё нормально.
     
  17. W4FhLF

    W4FhLF New Member

    Публикаций:
    0
    Регистрация:
    3 дек 2006
    Сообщения:
    1.050
    Но наверное это как-то объясняется разыменовыванием статических переменных. Я не специалист в C#.

    Booster
    Брякнись на Console.WriteLine(StackItem);, потом наведи курсор на строку _stack.Push(5);, потом опять на то место куда брякнулся и так 5 раз. Стек с каждым разом будет пустеть. :)
     
  18. Neonix

    Neonix New Member

    Публикаций:
    0
    Регистрация:
    2 май 2009
    Сообщения:
    839
    Booster
    Ещё раз по кругу.
    При прохождении get{return _stack.Pop();} отладчик говорит о том, что StackItem уменьшился на один. То есть он выполняет return _stack.Pop(), из за этого стек уменьшается(в понимании дебагера).
    Int32 i = _stack.Pop() не уменьщает стек, что есть дзен, гуд, etc.
    Ок?
     
  19. Neonix

    Neonix New Member

    Публикаций:
    0
    Регистрация:
    2 май 2009
    Сообщения:
    839
    W4FhLF
    Во-во! наконец-то по делу.)
     
  20. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    W4FhLF
    По-моему это не баг, а фича. Для того, чтобы получить значение отладчик дёргает метод get, отсюда и побочный эффект. ^)