Я возился с IDA Pro и пытался разобрать свои собственные продукты только ради этого.
Я заметил пару вещей, которых не понимаю, потому что мои знания языка ассемблера ужасны. Вот небольшой фрагмент кода, который вызывает CGContextSetRGBStrokeColor.
CGContextSetRGBStrokeColor(ctx, 1, 1, 1, 1);
В IDA это выглядит так:
Я не понимаю ряд вещей:
- Как 0x3F800000 относится к числу 1? Я предполагаю, что это ссылка, однако я не понял, к чему она относится.
- Почему MOVS вызывается три раза вместо четырех (потому что аргументов четыре)?
- Являются ли R0, R1, R2 и т. д. регистрами ЦП?
- Может ли кто-нибудь объяснить это:
http://a.imageshack.us/img836/4018/gah.png
Этот файл представляет собой Framework (поэтому файл Mach-O). Эта функция исходит от CoreGraphics.