![]() |
eXeL@B —› Вопросы новичков —› Вызов функции string::find |
Посл.ответ | Сообщение |
|
Создано: 02 июня 2009 08:31 · Личное сообщение · #1 Вот пример кода из Иды: Синим подчеркнут вызов string::find. Сперва ф-ции передаются 2 параметра, 0 и поинтер на строку содержащую слово "LIC_" Сама же функция должна вызываться примерно так: ......... string str ("There are two needles in this haystack with needles."); string str2 ("needle"); size_t found; found=str.find(str2); ..... так вот вопрос: Как найти эту переменную str из выражения found=str.find(str2)? Она не заталкивается пушем в стек.. Где эта строка в которй ищется подстрока?? В каком-то регистре или еще где? ![]() ![]() |
|
Создано: 02 июня 2009 08:37 · Личное сообщение · #2 Поищи в регистрах, если это MSVC то скорее всего это будет ecx. А в стек она заталкиваться и не должна, это ж не параметр для функции. ECX - это указатель (this), на собственно класс (фактически структуру, возможно с доп. полями если есть RTTI и/или виртуальные функции), там и ищи указатель на большую строку. ![]() |
|
Создано: 02 июня 2009 09:12 · Личное сообщение · #3 |
|
Создано: 02 июня 2009 11:31 · Поправил: OKOB · Личное сообщение · #4 А вот что делает ф-ция Mid (красный кружок), что-то я описания не нашел ее ----- 127.0.0.1, sweet 127.0.0.1 ![]() |
|
Создано: 08 июня 2009 12:57 · Поправил: Voffka28 · Личное сообщение · #5 Немного офтоп. Что делает команда SBB eax, eax ? Если можно объясните по-проще. Нашел какое-то описание, но так и не понял что же за шаманство она делает... Полностью выглядит так: .text:004986D7 004 sub eax, edx ; вычитаем: ХРЕНЬ_от_Файла - ХРЕНЬ_от ЧекСума .text:004986D9 004 neg eax .text:004986DB 004 sbb eax, eax ![]() |
|
Создано: 08 июня 2009 14:38 · Поправил: Valemox · Личное сообщение · #6 Voffka28 пишет: Что делает команда SBB eax, eax ? Вычитание с заемом Схема команды: sbb операнд_1,операнд_2 Назначение: целочисленное вычитание с учетом результата предыдущего вычитания командами sbb и sub (по состоянию флага переноса cf). Алгоритм работы: выполнить сложение операнд_2=операнд_2+(cf) выполнить вычитание операнд_1=операнд_1-операнд_2 Применение: Команда sbb используется для выполнения вычитания старших частей значений многобайтных операндов с учетом возможного предыдущего заема при вычитании младших частей значений этих операндов. Думаю, теперь уж разберешся ![]() |
|
Создано: 08 июня 2009 18:34 · Поправил: Модератор · Личное сообщение · #7 |
![]() |
eXeL@B —› Вопросы новичков —› Вызов функции string::find |