Platov

412 views
369 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
412
On SlideShare
0
From Embeds
0
Number of Embeds
74
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Platov

  1. 1. Портирование кода на мобильные устройства iOS/Android Константин Платов
  2. 2. ARM• Лицензирование ядра• System On Chip• RISC архитектура
  3. 3. Лицензирование Intel Xscale: • ARMv5TE • Улучшенный кэш • 40-битный аккумулятор • SIMD “Wireless MMX” HTC Universal
  4. 4. System On Chip• Одно или более ядер• Акселераторы• Специализированные сопроцессоры• Память• Интерфейсы ввода/вывода• Обвязка (осцилляторы, таймеры) TI OMAP
  5. 5. RISC• Load/Store архитектура• 16 регистров по 32 бита• Фиксированные команды• Мощные адресные команды• Однотактовое выполнение• Условное выполнение• Быстрый сдвиг
  6. 6. Семейство ARMЯдро ARM9 ARM9E ARM10 ARM11 Cortex Cortex-A50Архитектура ARMv4T ARMv5TE ARMv6 ARMv7 ARMv8Особенность DSP SIMD NEON 64-bitThumb Thumb Thumb Thumb Thumb2 Thumb2
  7. 7. Кроссплатформенность
  8. 8. Принцип написания кода• Единая типизация• Алгоритмы – Системные вызовы – Базовые операции• Аппаратно-зависимые части
  9. 9. Единая типизация
  10. 10. Единая типизация
  11. 11. Алгоритмы. Системные вызовы. Пример: XDAIS
  12. 12. Алгоритмы. Базовые операции
  13. 13. Аппаратно-зависимые части• Сильно зависят от API фреймворков• Часто используют не Native средства• Используют менее переносимые языки
  14. 14. Базовые врапперы• Системный лог• Менеджер памяти• Мьютексы / Атомарные операции• Менеджер потоков• Системная информация• Трасинг / Логирование• Работа с файлами• Средства профилирования
  15. 15. Дополнительные врапперы• Сокеты/работы с сетью• Аудиоустройства• Видеоустройства• Устройство ввода
  16. 16. Преимущество разделения кода Аппаратная часть Базовые Алгоритмическая операции часть System APIs Video Engine Audio
  17. 17. Пример: uint64 >> nЧему равны res63 и res64?
  18. 18. Пример: uint64 >> nOS Windows OSX OSX iOSКомпилятор Cl clang clang clangАрхитектура I386 I386 x86_64 armРазрядность 32 бита 32 бита 64 бита 32 битаres63 0x0 0x0 0x0 0x0res64 0x0 0x1234…45678 0x1234…45678 0x0
  19. 19. Пример: uint64 >> n
  20. 20. На что следует обратить внимание?• Память данных/кода• Выравнивание данных• Оптимизация под процессор• Плавающая точка• Целочисленное деление• Многопоточность и MainThread
  21. 21. Итог
  22. 22. К о н с та н т и н П л ато в п р о г р а м м и с т, A g e n t / V o I P k.platov@corp.mail.ru

×