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

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

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

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

Сравнение псевдокода для аналогов инструкции Add with Carry(ADC) между arm и Thumbif​ ​ConditionPassed​()​ ​thenif​ ​Rd​ ​==​ ​'​1111​'​ ​&&​ S ​==​ ​'​1​'​ ​then​ SUBS PC​,​ LR​;d ​=​ ​UInt​(​Rd​);n ​=​ ​UInt​(​Rn​);m ​=​ ​UInt​(​Rm​);setflags ​=​ ​(​S ​==​ ​'​1​');(​shift_t​,​ shift_n​)​ ​=​ ​DecodeImmShift​(​type​,​ imm5​);shifted ​=​ ​Shift​(​R​[​m​],​ ​shift_t​,​ shift_n​,​ APSR​.​C​);(​result​,​ carry​,​ overflow​)​ ​=​ ​AddWithCarry​(​R​[​n​],​ shifted​,​ APSR​.​C​);if​ d ​==​ ​15​ ​then// Can only occur for ARM encodingALUWritePC​(​result​);​ ​// setflags is always FALSE hereelseR​[​d​]​ ​=​ result​;if​ setflags ​thenAPSR​.​N ​=​ result​<​31​>;APSR​.​Z ​=​ ​IsZeroBit​(​result​);APSR​.​C ​=​ carry​;APSR​.​V ​=​ overflow;Иллюстрация 2.

Сравнение кодировки операции между Thumb (сверху) иarm(снизу).[12]В отличии от arm, где для арифметико-логических операций обновлениефлагов состояния кодируется при помощи специального бита в инструкции, дляарифметических операций Thumb выставление флагов является поведениемпо-умолчанию.Исключением является их исполнение в блоке условного выполнения If Then,и инструкции прямого сравнения CMP.Еще одним важным отличием от основного набора инструкций являетсяотсутствие сдвигов, встроенных в опкод инструкции.В оригинальной системе команд arm, второй операнд может быть подвергнутарифметическому либо логическому сдвигу без использования дополнительныхинструкций.

Это позволяет расширить количество представлений длянепосредственных значений, которое ограничено. Очевидно, что командазанимающая целое машинное слово не может включать в себя непосредственноезначение объемом тоже в целое машинное и слово, и при этом иметь смысл.Для обхода этого ограничения в Thumb введены специальные инструкцииLSL, LSR, и т.д.Disassembly of section .text:00000240 <foo>:240: b580242: b082244: af00246: 2300248: 607b24a: 687b24c: 330124e: 607b250: 46c0252: 46bd254: b002256: bd80push {r7, lr}sub sp, #8add r7, sp, #0movs r3, #0str r3, [r7, #4]ldr r3, [r7, #4]adds r3, #1str r3, [r7, #4]nop; (mov r8, r8)mov sp, r7add sp, #8pop {r7, pc}00000258 <__real_main>:258: b580push {r7, lr}25a: b082sub sp, #825c: af00add r7, sp, #025e: f7ff ffefbl 240 <foo>262: 2300movs r3, #0264: 607bstr r3, [r7, #4]266: 687bldr r3, [r7, #4]268: 3301adds r3, #126a: 607bstr r3, [r7, #4]26c: 2300movs r3, #026e: 0018movs r0, r3270: 46bdmov sp, r7272: b002add sp, #8274: bd80pop {r7, pc}...00000278 <main>:278: e59fc004ldr27c: e08cc00fadd280: e12fff1cbx284: ffffffd5.wordip, [pc, #4] ; 284 <main+0xc>ip, ip, pcip0xffffffd5Листинг 2.

Пример дизассемблированного машинного кода, собранного gccдля машины, поддерживающей первую версию Thumb.Disassembly of section .text:00000240 <foo>:240: e52db004244: e28db000248: e24dd00c24c: e3a03000250: e50b3008254: e51b3008258: e283300125c: e50b3008260: e1a00000264: e28bd000268: e49db00426c: e12fff1epush {fp}; (str fp, [sp, #-4]!)add fp, sp, #0sub sp, sp, #12mov r3, #0str r3, [fp, #-8]ldr r3, [fp, #-8]add r3, r3, #1str r3, [fp, #-8]nop; (mov r0, r0)add sp, fp, #0pop {fp}; (ldr fp, [sp], #4)bx lr00000270 <main>:270: e92d4800push {fp, lr}274: e28db004add fp, sp, #4278: e24dd008sub sp, sp, #827c: ebffffefbl 240 <foo>280: e3a03000mov r3, #0284: e50b3008str r3, [fp, #-8]288: e51b3008ldr r3, [fp, #-8]28c: e2833001add r3, r3, #1290: e50b3008str r3, [fp, #-8]294: e3a03000mov r3, #0298: e1a00003mov r0, r329c: e24bd004sub sp, fp, #42a0: e8bd8800pop {fp, pc}Листинг 3.

Тот же код, выраженный в armСокращенный размер инструкции обеспечивает меньше места на кодированиеоперандов. Даже отказ от трех-регистровой схемы “регистр назначения”:”регистрпервого операнда”:”регистр второго операнда”, применяемой в оригинальнойсистеме команд, не позволяет всем командам Thumb адресовать все регистрыпроцессора.Потому для этой системы команд, регистровый файл разбили на две части,верхнюю: регистры с восьмого по шестнадцатый (Hi), и нижнюю: с нулевого поседьмой (Lo).В отличии от x86, где компилятору доступны всего восемь целочисленныхрегистров общего назначения, с большим списком оговорок и конвенциальныхиспользований для половины из них[9], в ARM регистровый файл состоит изпятнадцати регистров общего назначения, плюс двух специализированныхрегистров.

Банк регистров так же различен для разных режимов.Иллюстрация 3, банк регистров архитектуры ARM [12]Программный счетчик и регистр флагов являются единственнымиспециальными регистрами; все остальные подчиняются общим правилам.Исторически сложилось использование тринадцатого регистра для храненияуказателя стека (Stack Pointer, SP), а четырнадцатого для хранения адреса возвратапри вызове процедур (Link Register, LR).Для инструкций arm это не более чем конвенция. Компилятор илипрограммист могут использовать их по своему усмотрению.Однако для первой версии набора команд Thumb это не так. В большинствесвоем, этим инструкциям доступны для адресации только нижние регистры, атринадцатый адресуется особым образом и всегда используется только дляхранения указателя стека.Вторая версия расширений Thumb, помимо инструкции условного исполненияIT, добавила множество инструкций размером в машинное слово.Эти дополнения сделали из набора команд Thumb полноценную архитектурукоманд, позволив закодировать ей весь исполняемый файл целиком, безпроцедур-оболочек на arm.

(см. Листинг 2 и Листинг 3)Они по прежнему не допускают условного исполнения, зашифрованногопрямо в инструкции. Для этого используется IT.Помимо множества сервисных инструкций, вторая версия Thumb включает всебя расширенные до слова арифметическо-логические инструкции.

Они, как иarm-версии, позволяют использовать сдвиги закодированные прямо в инструкции,а также, для непосредственных значений, могут шифровать их используя паттернычасто используемых значений, расширяя один байт до целого слова.Disassembly of section .text:00000240 <foo>:240: b480242: b083244: af00246: 2300248: 607b24a: 687b24c: f103 13ff250: 607b252: bf00254: 370c256: 46bd258: bc8025a: 4770push {r7}sub sp, #12add r7, sp, #0movs r3, #0str r3, [r7, #4]ldr r3, [r7, #4]add.w r3, r3, #16711935str r3, [r7, #4]nopadds r7, #12mov sp, r7pop {r7}bx lr; 0xff00ff0000025c <main>:25c: b580push {r7, lr}25e: b082sub sp, #8260: af00add r7, sp, #0262: f7ff ffedbl 240 <foo>266: 2300movs r3, #0268: 607bstr r3, [r7, #4]26a: 687bldr r3, [r7, #4]26c: 3301adds r3, #126e: 607bstr r3, [r7, #4]270: 2300movs r3, #0272: 4618mov r0, r3274: 3708adds r7, #8276: 46bdmov sp, r7278: bd80pop {r7, pc}Листинг 4.

Дизассемблер примитивной программы, закодированной gcc подthumb-2.Главным же дополнением второй версии расширения Thumb сталавозможность одновременной работы инструкций размером в слово и полуслововнутри одной процедуры, с одновременным расширением списка инструкций,которые поддерживают переход, переключающий режим процессора между двумяархитектурами системы команд.3. Транслятор3.1 Теоретическое основаниеЗа основание, на которое опирается данная работа, является теорема овиртуализируемости и последующие работы.

Архитектура Parallels ARM Emulatorпредставляет собой эмулирующий монитор виртуальной машины с поддержкойстатической (на текущий момент) двоичной трансляции для прикладного уровня.Иллюстрация 4. Монитор виртуальной машиныДанная схема была выбрана из-за невозможности классическойвиртуализации архитектуры ARM на целевой архитектуре x86.Классическая виртуализация (trap & emulate схема) предусматриваетвыполнение эмулируемого и реального кода в в одном и том же пространствепамяти, на одном и том же реальном устройстве, с сохранением контекстаэмулируемой системы в заранее определенном участке памяти.При этом обращения эмулируемого кода к участкам памяти реальнойсистемы, смены привилегий и обращения к устройствам обрабатываютсямонитором отдельно (trap).Для такой схемы была разработана модель, используя которую возможнодоказательство возможности построения эффективного монитора виртуальноймашины для заданной архитектуры.

[11]Такой монитор обладает тремя важнейшими характеристиками. Первое, онпредоставляет среду выполнения, не отличимую от настоящего аппаратногообеспечения.Второе, замедление исполнения программ в контролируемой монитором средеисполнения должно быть минимальным и идеально различия должны быть недетектируемы изнутри среды.Третье, монитор должен обладать абсолютным контролем над ресурсамипредоставляемым виртуальной среде.Существуют дополнения данной схемы, которые расширяют теоретическийбазис на более современные модели архитектур и также рассматриваютвозможность кроссплатформенной виртуализации (с отличающимисяэмулируемыми и реальными архитектурами).

[16]Однако в данном случае классическая виртуализация попросту невозможна,что доказывается в работе Нилса Пеннмана и прочих. [15] Основной причиной дляэтого является наличие в системах команд таких инструкций, как SVC, SEV, WFEи других, которые являются чувствительными инструкциями, доступнымпользователю, что нарушает условия теоремы о виртуализируемости.Виртуальной машиной называется среда исполнения, создаваемая мониторомвиртуальных машин.

В нашем случае пользовательские приложения видят средуисполнения как машину с процессором generic ARM архитектуры иконфигурируемым набором остальной аппаратуры, чье пользовательскоеокружение (набор библиотек и операционная система) полностью повторяетданное у реальной системы, на которой запущен эмулятор. [11]Состояние виртуальной машины в любой момент времени описываетсячетверкойS = {E, M , P , R} , S ∈ CГде E это линейная область исполняемой памяти, M это контекст процессора(состоящий как минимум из двух режимов: привилегированного ипользовательского), P программный счетчик, и R - схема адресации в E.Множество C - конечное множество состояний.Инструкцией классическая теория виртуальных машин называет отображениеi : C → C .

Инструкции могут быть перехвачены процессором в случаенедопустимости с точки зрения уровня привилегий, или доступа к неправильномуили запрещенному участку памяти. При перехвате, управление передается взаранее определенный обработчик в памяти, а состояние системы сохраняется длявосстановления после обработки.Все инструкции в заданной система набора команд делятся на три класса.Первый - привилегированные инструкции, которые выполняются корректно впривилегированном (заданном множестве таковых) режиме, и перехватываются вовсех остальных.Второй - чувствительные инструкции, класс состоящий изконтроль-чувствительных и поведение-чувственных инструкций.Контроль-чувственные инструкции пытаются изменить режим исполнения, вкотором находится система, либо количество доступной памяти.Поведение-чувственные могут иметь различный результат выполнения, взависимости от их положения в памяти, либо от режима исполнения, в которомнаходится система.Третий класс состоит из всех остальных инструкций.Как было сказано выше, обе системы команд в архитектуре ARM содержатинструкции, которые являются чувствительными, но не являютсяпривилегированными.

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

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

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

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