Главная » Просмотр файлов » Поддержка системы команд THUMB в двоичной трансляции

Поддержка системы команд THUMB в двоичной трансляции (1187412), страница 3

Файл №1187412 Поддержка системы команд THUMB в двоичной трансляции (Поддержка системы команд THUMB в двоичной трансляции) 3 страницаПоддержка системы команд THUMB в двоичной трансляции (1187412) страница 32020-09-11СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 3)

Примерами таких инструкций являются SEV, SVC, WFI,MCR, LDC, и т.д.В своей работе Пеннман и соавторы отмечают два возможных пути дляэффективной виртуализации ARM, а именно паравиртуализацию и динамическуюдвоичную трансляцию.Паравиртуализацией называют методику системной виртуализации, котораявключает в себя использование модифицированной версии операционной системыдля запуска внутри виртуальной машины. Обычный набор модификаций включаетв себя адаптацию кода системы к работе на более низком машинном уровнепривилегий.Для упрощения паравиртуализации используются аппаратные расширения.Данная методика рассматривается в их работе с точки зрения ARM-на-ARMполносистемной виртуализации, и не представляет интереса в рамках выполненияданной работы.Полная виртуализация также достижима и без поддержки со стороныоборудования, используя двоичную трансляцию. Это продолжение методикигибридного монитора из классической теории, для реализуемости которого такжедоказан критерий.Гибридный монитор виртуальной машины это такой монитор, которыйпозволяет обычное исполнение вне привилегированного режима, но эмулируетвыполнение инструкций в привилегированном.Так, например, классический гибридный монитор исполнял бы инструкцииоперационной системы как эмулятор, а пользовательские приложения за редкимисключением запускал бы как обычный монитор.Критерием для построения гибридного монитора являетсяпривилегированность еще одного введенного класса инструкций, чувствительных кпользователю.Обновленная модель виртуальной машины, используемая в даннойработе, выглядит следующим образом.Состояние в любой момент времени описывается в виде кортежа восьмерки:S = {E, M , P , G, C, A, Dm , Dp }, где первые три параметра сохраняют свой первоначальный смысл.

Однако,множество режимов процессора теперь делится на m​u​- непривилегированныйпользовательский режим, и множество привилегированных режимов M​:p​M =(Mp/ Mp∪ mu ) , mu ∈Множество G определяет состояния всех регистров общего назначения,кроме, соответственно, программного счетчика.Множество C определяет состояние всех конфигурационных регистров.Доступ к памяти E теперь осуществляется через карту трансляциивиртуальной памяти A.Последние два множества определяют состояние устройств ввода-вывода.Карта трансляции адресов А представляет собой множество троек(v, p, x), v ∈ V , p ∈ P , x ∈ XГде v это адрес виртуальной памяти, p это адрес в физической памяти, xопределяет разрешения доступа. Для любого v, существует хотя-бы одна такаятройка в А, что содержит v.

Функция T​(v) определяет отображение адреса изA​согласно этим тройкам. Если v нету в A, или x запрещает доступ, происходитперехват по доступу к памяти.В обновленной модели мы можем различать дополнительные подклассычувствительных инструкций, такие как чувствительность по конфигурации и попользователю.Чувствительность к конфигурации означает зависимость исхода инструкцииот состояния конфигурационных регистров.

В формальном виде, инструкцияназывается чувствительной к конфигурации в том случае, когда для некоторыхдвух состоянийS 1 = (e, m, p, g, c1 , a, dm, dp)иS 2 = (e, m, p, g, c2 , a, dm, dp)в которых не происходит перехватывания по доступу к памяти, верно, чтоi(S 1 ) =/ i(S 2 )Введем определение инструкции, чувствительной к пользователю.Инструкция i(S) называется чувствительной к пользователю, если существуетсостояние S такое, что i(S) чувствительно по контролю или/и чувствительно кконфигурации.Дополнив классы чувствительных и привилегированных функций, можнорасширить на эту модель результаты, доказанные для старой модели. [15]Во-первых, анализ наборов команд Thumb показывает, что в нём существуетчетыре инструкции, чувствительные по пользователю:1.

SVC - переводит процессор в привилегированный режим supervisor2. SEV - необязательная для имплементации инструкция-подсказка, частьмеханизма энергосбережения в мультипроцессорных системах.3. WFE - то же самое4. WFI - необязательная для имплементации инструкция-подсказка, частьмеханизма энергосбережения.Первая из списка является привилегированной, однако остальные три - нет.Это означает, в свою очередь, невозможность построения гибридного мониторавиртуальной машины для системы команд Thumb.Однако, руководство разработчика ARM упоминает, что оставшиеся триинструкции являются необязательными к исполнению на чипе, и в случае, когдаони не поддерживаются, процессору предписывается заменить их на инструкциюпропуска такта NOP. Она не является чувствительной, а значит, построениегибридного монитора виртуальной машины возможно с соблюдением условияигнорирования данных трех инструкций.

Потери каких-то свойств монитора приэтом не произойдет, так как функциональность энергосбережения в модель невходит.3.2 Общая схема работыМонитор виртуальной машины и сама виртуальная машина исполняется вразных потоках.На вход монитор виртуальной машины принимает исполняемый файлсобранный для машины под управлением ARM микропроцессора и путь досистемных библиотек.Исполняемый файл анализируется на наличие зависимостей от библиотечныхфункций, составляется карта релокаций, зависимости обрабатываются иразрешаются относительно библиотек предоставленных монитору.После этого образ файла загружается в память и начинается егопредварительная обработка.Первым этапом обработки является анализ потока исполнения.

Каждаяинструкция, начиная с входной инструкции исполняемого файла, декодируется, ипо специальной таблице категорируется. На данном этапе происходит разбиениеисполняемого файла на непрерывные блоки инструкций. В первую очередьотбирается множество непривилегированных инструкций. Т.е. Доступных дляисполнения в пользовательском режиме.Далее анализатор интересуют различные виды инструкций, изменяющихпоток управления. Условные и безусловные переходы, точки возврата и т.д. Такиеинструкции маркируют начало и конец непрерывного блока исполнения.Третья интересующая анализатор категория это “сложные” функции: такие,которые могут изменять контекст процессора, а также актуальные для ARMинструкции работы с памятью.

В дальнейшем они либо будут сигнализироватьпрекращение трансляции и переход в режим эмуляции, либо изменяют своюкатегорию в зависимости от контекста анализатора.Анализатор также вычисляет адреса переходов в зависимости от инструкций.После построения и линковки дерева блоков, начинается этап анализаиспользования регистров. Каждая инструкция в дереве обрабатывается согласнопредустановленному для нее правилу, и для нее сохраняется карта использованиярегистров ARM <-> x86.Далее идет прогон транслятора.

Транслятор выделяет память в кэшетрансляции, для каждого блока согласует карты использования регистров изаписывает в кэш код каждой инструкции вместе с необходимыми системнымизаглушками и ретранслированными адресами вызовов. Если что-то на данном этапене прошло, например, карты использования регистров не могут быть согласованы,транслятор помечает весь блок как не транслированный и в дальнейшем он будетисполняться в режиме эмуляции.Dump of assembler code from 0xf7fbd000 to 0xf7fbd08a:0xf7fbd000:mov 0x0(%ebp),%ebx0xf7fbd003:mov 0x18(%ebp),%edx0xf7fbd006:mov 0x58(%ebp),%eax0xf7fbd009:mov 0x68(%ebp),%ecx0xf7fbd00c:mov 0x70(%ebp),%esi0xf7fbd00f:sub $0x4,%ecx0xf7fbd015:mov %eax,(%ecx)0xf7fbd017:mov %ecx,%eax0xf7fbd019:add $0x0,%eax0xf7fbd01f:sub $0xc,%ecx0xf7fbd025:mov $0x0,%edx0xf7fbd02b:sub $0x8,%eax0xf7fbd031:mov %edx,(%eax)0xf7fbd033:add $0x8,%eax0xf7fbd039:sub $0x8,%eax0xf7fbd03f:mov (%eax),%edx0xf7fbd041:add $0x8,%eax0xf7fbd047:add $0xff0000,%edx0xf7fbd04d:add $0xff,%edx0xf7fbd053:sub $0x8,%eax0xf7fbd059:mov %edx,(%eax)0xf7fbd05b:add $0x8,%eax0xf7fbd061:mov %eax,%ecx0xf7fbd063:add $0x0,%ecx0xf7fbd069:mov (%ecx),%eax0xf7fbd06b:add $0x4,%ecx0xf7fbd071:sub $0x4,%ecx0xf7fbd077:mov %esi,0x78(%ebp)0xf7fbd07a:mov %ebx,0x0(%ebp)0xf7fbd07d:mov %edx,0x18(%ebp)0xf7fbd080:mov %eax,0x58(%ebp)0xf7fbd083:mov %ecx,0x68(%ebp)0xf7fbd086:mov %esi,0x70(%ebp)0xf7fbd089:retEnd of assembler dump.Листинг 5, Транслированная в x86 с Thumb функция, хранимая в памятиэмулятора.Очень важным для эффективной работы этой стадии является процессдекодирования инструкций.

Он осуществляется с помощью специальных,составленных вручную таблиц операционных кодов и процедур обратного вызова,по которым в момент загрузки монитора виртуальной машины строятся поисковыехеш-таблицы.Каждая инструкция всех систем команд была проанализирована вручную идля неё были написаны соответствующие процедуры обратного вызова.typedef struct ​instr_description ​{uint32_t ​mask​;uint32_t ​value​;​const char ​*​name​;uint32_t ​weight​;​struct ​{user_cfa_insn_flags_t ​user_cfa_flags​;​void ​*​user_cfa_callback​;regs_usage_handle_t ​regs_usage_callback​;translation_handle_t ​translator_callback​;​ ​};} instr_desc_t;// ...instr_desc_t ​thumb_instr_table[] = {{ ​0x0000ffc0​, ​0x00004140​, ​0​, ​0​, ​"adc"​, ​1​,{ ​EMU_CB​(thumb_adc_reg,​NULL​)USER_TRANSLATE_CB​(​trans_thumb_adc​, reg_usage_thumb_data)}},​// register,ARMv4T, >=ARMv5T*{ ​0x0000fe00​, ​0x00001c00​, ​0​, ​0​, ​"add"​, ​1​,{ ​EMU_CB​(thumb_add_imm1,NULL​) ​USER_CFA_FLAGS​(.is_complex = ​1​)USER_TRANSLATE_CB​(trans_thumb_add_imm, reg_usage_thumb_arithm) }},//​immediate, ARMv4T, >=ARMv5T*{ ​0x0000f800​, ​0x00003000​, ​0​, ​0​, ​"add"​, ​1​,{ ​EMU_CB​(thumb_add_imm2,NULL​) ​USER_CFA_FLAGS​(.is_complex = ​1​)USER_TRANSLATE_CB​(trans_thumb_add_imm, reg_usage_thumb_arithm) }},//​immediate, ARMv4T, >=ARMv5T*//...}Листинг 6.

Структура описания инструкции и часть таблицы декодированияИллюстрация 5. Схема потока данных в бинарной трансляцииПосле обработки данные таблицы приобретают несколько уровней, взависимости от коллизий. Вместо классической хеш-функции используетсяналожение специализированных под каждую систему команд масок.Когда весь исполняемый файл был обработан, в отдельном потоке запускаетсявиртуальная машина, в которой начинается исполнение с входного блока. Блокислинкованы прямо в кэше монитора виртуальной машины - выход в режимэмуляции происходит только в случае неподдерживаемой инструкции, либоисключения, либо ошибки.Одним из возможных исключений является вызов библиотечной функции.Важнейшим преимуществом Parallels ARM Emulator является возможностьнапрямую использовать системные библиотеки, собранные под архитектуру x86, изэмулятора.translated_block_t *trans_block = block->translated_data;addr_t addr = dynamic_mapping (trans_block);asm volatile("pusha \n"​"mov %0, %%eax \n"​"mov %1, %%ebp \n"​"call *%%eax \n"​"popa \n"​::​"r"​((uint32_t)addr), ​"r"​((uint32_t)(&(vcpu->ctx))):​"eax");processor_set_cond_flags(vcpu, vcpu->ctx.CPSR);SET_PC(vcpu, GET_REG(vcpu, REGPC));Листинг 7.

Характеристики

Тип файла
PDF-файл
Размер
573,26 Kb
Высшее учебное заведение

Список файлов ВКР

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6374
Авторов
на СтудИзбе
309
Средний доход
с одного платного файла
Обучение Подробнее