| Сейчас на форуме: jinoweb (+6 невидимых) | 
|  | eXeL@B —› Программирование —› Как вызвать _ftol() в C# | 
| Посл.ответ | Сообщение | 
|  | Создано: 09 августа 2018 08:36 · Поправил: nmix · Личное сообщение · #1 Всем привет! Изучаю код функции. В IDA Pro получил псевдо-представление кода на C. Смотри картинку. Если на входе функции имеем аргумент 0x53BE28 (5488168). После выполнения цикла for получаем i = 495910.87368 Далее выполняется функция _ftol(); т.е. преобразование вещественного числа в целочисленное. Получаем результат 0x79126 (495910) До этого момента все понятно. Но вот дальше вычисления не ясны. При выходе из функции снова вызывается _ftol(); И в результате мы получаем 0xD54D3 (873683) Как так получилось? Как выполнить _ftol() над целочисленной переменной ? Вероятно, функция выполняется на памятью в которой лежит значение 0x79126 Прошу направить или ткнуть носом где почитать.  2322_09.08.2018_EXELAB.rU.tgz - Reverse.png  | 
|  | Создано: 09 августа 2018 09:02 · Поправил: f13nd · Личное сообщение · #2 Очевидно декомпилятор шляпу выдал. Чисто логически не может эта функция войдом быть. Если он этой функцией не заменил fistp или подобную инструкцию, тогда это хоть как-то логично выглядит. ЗЫ: 873683 это дробная часть переменной i, если верить картинке. Так что с программой все в порядке, это декомпилер так шутит. А 495910 это 0x79126, целая часть этой же i. ----- 2 оттенка серого  | Сообщение посчитали полезным: nmix | 
|  | Создано: 09 августа 2018 10:31 · Личное сообщение · #3 | 
|  | Создано: 09 августа 2018 11:06 · Поправил: nmix · Личное сообщение · #4 | 
|  | Создано: 09 августа 2018 12:04 · Личное сообщение · #5 Автор сам может закрыть свою тему, кнопка "Закрыть тему" находится внизу страницы, под кнопкой "Отправить сообщение".  | Сообщение посчитали полезным: nmix | 
|  | eXeL@B —› Программирование —› Как вызвать _ftol() в C# | 
| Эта тема закрыта. Ответы больше не принимаются. | 






 Для печати
 Для печати