motofan logo
11 страниц V < 1 2 3 4 > »         
> 

Carry - эмулятор., Блог.

DmT
сообщение 25.1.2010, 6:12


Мото-Портной
******

Группа: Разработчики
Сообщений: 1 174
Регистрация: 31.3.2007
Из: Екатеринбург
Пользователь №: 129 181
Модель телефона: LG GW620, L7e и др.
Победитель конкурса 2008


Настроение:
Второй год подряд решаю мир. Решения не найдено.



Рейтинг: 669



Andy51,
Ну дак по этому я и занялся JIT компиляцией wink.gif
с JIT вполне можно 53 МГц сделать, без 17 ГГц процессора. А если еще и переписать работу с флагами CF, NF, ZF, VF на асме, то вообще сказочные частоты получить можно, ибо выставление флагов одна из наиболее затратных частей.
Так что ничего я не перемудрил.

Кстати, может быть поэтому JVM на мотороле столь медленная - из-за отсутствия JIT компиляции кода?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
DmT
сообщение 25.1.2010, 20:52


Мото-Портной
******

Группа: Разработчики
Сообщений: 1 174
Регистрация: 31.3.2007
Из: Екатеринбург
Пользователь №: 129 181
Модель телефона: LG GW620, L7e и др.
Победитель конкурса 2008


Настроение:
Второй год подряд решаю мир. Решения не найдено.



Рейтинг: 669



Вот седня флагами занимался. Разобрались.
Решил все инструкции не написать, а описать. То есть на псевдокоде написать как они должны работать, чтобы при кодогенерации была возможность избавляться от лишнего кода. Да и кодогенерация вполне оправдывает свое название, т.к. раньше это было всего лишь экземплярирование готового кода, в начало которого просто подставлялись переменные, что плохо сказывалось на производительности. Теперь же мне придется все инструкции оформлять на своем доморощенном ассемблере, что в конечном счете приведет к экономии инструкций. А следовательно и к увеличению производительности, что позволит владельцам медленных систем использовать эмулятор без понижения тактовой частоты. Да и в дальнейшем будующем позволит оптимизировать код анализируя его целыми кусками, что вообще шикарно .
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Pyth_ON!
сообщение 27.1.2010, 11:50


MOTOMAGXX0r
****

Группа: Пользователи
Сообщений: 166
Регистрация: 29.4.2009
Пользователь №: 198 680
Модель телефона: ROKR EM30/PEARL VE66
Прошивка: R6716_G_71.01.02R_B

Рейтинг: 48



Прочитал тему и слюнки потекли :)
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
motoprogger
сообщение 27.1.2010, 12:48


Гуру
******

Группа: Разработчики
Сообщений: 1 327
Регистрация: 20.7.2006
Из: Г. Омск
Пользователь №: 92 049
Модель телефона: C380 и Talkabout
Прошивка: разные

Рейтинг: 490



JIT-компиляция Java, как я понял, на мобильных платформах непопулярна. У Google в андроиде вроде своя JVM, с несовместимым форматом исполняемых файлов (но есть конвертор), показывающая заметно лучшую производительность на мобильных платформах, но боюсь, их JVM нашему объёму оперативной памяти на P2K не светит

Насчёт JIT-компиляции ARM-кода под IA-32 - сразу предупреждаю, это сделает эмулятор несовместимым с процессорами других архитектур. То есть, его перенос на IA-64, amd64 или SPARC не будет тривиальным...
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
DmT
сообщение 27.1.2010, 16:18


Мото-Портной
******

Группа: Разработчики
Сообщений: 1 174
Регистрация: 31.3.2007
Из: Екатеринбург
Пользователь №: 129 181
Модель телефона: LG GW620, L7e и др.
Победитель конкурса 2008


Настроение:
Второй год подряд решаю мир. Решения не найдено.



Рейтинг: 669



Цитата(motoprogger @ Сегодня, 17:48)

Насчёт JIT-компиляции ARM-кода под IA-32 - сразу предупреждаю, это сделает эмулятор несовместимым с процессорами других архитектур. То есть, его перенос на IA-64, amd64 или SPARC не будет тривиальным...
*


Дак весь перенос состоит в переписывании конструкторов функций-обработчиков инструкций ARM. Согласен с тем, что не тривиально, но вполне осуществимо.
План переноса такой: (возможно) изменяется синтаксис псевдо ассемблера. Соответственно функции генерирующие байткод из описания инструкции. Соответственно меняется конструктор функции-обработчика инструкции ARM на новый синтаксис псевдо ассемблера и возможно меняется сама структура конструктора(если новая платформа позволяет написать обработчик проще).

К тому же IA-64 и amd64 все еще поддерживают совместимость с x86 инструкциями. На счет SPARC не знаю, но ткните мне пальцем в того, кто использует платформу на SPARC для написания эльфов.

Сообщение отредактировал DmT - 27.1.2010, 16:23
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
DOMAN
сообщение 27.1.2010, 20:25


Ветеран
*****

Группа: Пользователи
Сообщений: 542
Регистрация: 21.5.2009
Из: солнечная адыгея, майкоп.
Пользователь №: 199 932
Модель телефона: defy pro

Рейтинг: 190



объясните обычному юзеру на человеческом языке, к чему приведет ваш проект? и для чего он нужен? нашы телы мощьней станут? или это только для того чтоб еще производительней создавать эльфы?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
baat
сообщение 27.1.2010, 20:40


Самый Наглый
******

Группа: В отставке
Сообщений: 1 282
Регистрация: 18.5.2006
Из: Дом, милый дом...
Пользователь №: 83 674
Модель телефона: старая модель...
Прошивка: какая уж есть...
Победитель конкурса 2008


Настроение:
...



Рейтинг: 1535



DOMAN, нет, нет, и нет... простым юзерам ничего не даст, и написание эльфов не изменится, мощнее не станут, идёт рассуждения на тему написания эмулятора, в котором разработчик сможет запустить свое творение, на кампутере и не будет необходимости закидывать постоянно на телефон...
возможно будут написан некий анализатор програмного кода, кторый будет указывать что происходит и как, что в совю очередь позволит избежать глупых ошибок, ведущих к ребутам и зависаний...
но это всего лишь предположение, все задумки автора я мне неизвестны...
но до готового продукта ещё далеко, идёт рассуждения о методах реализации и способах оптимизации програмного кода эмуляции функций обработчика инструкций нашего проца на компе...
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
DOMAN
сообщение 28.1.2010, 5:41


Ветеран
*****

Группа: Пользователи
Сообщений: 542
Регистрация: 21.5.2009
Из: солнечная адыгея, майкоп.
Пользователь №: 199 932
Модель телефона: defy pro

Рейтинг: 190



Т.е. Как я понял, это даст Вам, разработчикам, создавать более стабильные эльфы. Без глюков. И нас юзеров оставить без работы. :( хороший проект. :)
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
baat
сообщение 28.1.2010, 7:12


Самый Наглый
******

Группа: В отставке
Сообщений: 1 282
Регистрация: 18.5.2006
Из: Дом, милый дом...
Пользователь №: 83 674
Модель телефона: старая модель...
Прошивка: какая уж есть...
Победитель конкурса 2008


Настроение:
...



Рейтинг: 1535



DOMAN, эльфы как кодили, так и будут кодить... глюки в основном по вине пользователей(много эльфов запущеных, памяти не хватает, имя прошивке поменяли, функий в либе нет, либа не та, и т.д.), на счёт вас оставит без работы, так и так на сто скачиваний, один отписавшийся... стабильнее врят ли эльфы станут, не панацею пишут, а эмулятор, на юзерах никах не скажется, только телефонам разработчиков станет немного легче, вот и всё, что изменится...
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
DmT
сообщение 28.1.2010, 19:41


Мото-Портной
******

Группа: Разработчики
Сообщений: 1 174
Регистрация: 31.3.2007
Из: Екатеринбург
Пользователь №: 129 181
Модель телефона: LG GW620, L7e и др.
Победитель конкурса 2008


Настроение:
Второй год подряд решаю мир. Решения не найдено.



Рейтинг: 669



Сегодня наконец начал разбираться с кодогенерацией... Ох ё, чего эти противные Intel наворотили в своем референсе...
http://www.intel.com/design/pentiumii/manuals/243191.htm
Час с @motoprogger потратили на то, чтобы только раскурить самые базовые вещи, о самой кодогенерации речи даже пока идти не может.
Информация для интересующихся:
В двух словах о инструкциях x86.
инструкции не имеют фиксированной длинны. Общий вид инструкции:
Код
[Instruction prefix] - есть не у всех инструкций, поле может занимать от 0 до 4 байт, может менять значение инструкции.
[Opcode] - основная часть того, что опредляет что же за инструкция перед нами. Занимает от 1 до 2 байт, но еще 3 бита могут храниться в следующем поле.
[ModR/M] - Занимает 1 байт, если вообще используется. Делится на три подполя:
----[Mod] - 2 бита, которые определяют что из себя представляют операнды инструкции(регистр/память)
----[Reg/Opcode] - 3 бита. Во-первых те самые 3 бита дополнительных для [Opcode]. Во вторых информация об операндах(номер регистра помеченного в описании инструкции как "r").
----[R/M] - 3 бита. Так же определяет информацию об операндах. Если [Mod] соответствует операндам-регистрам, то тут будет номер регистра помеченного "r/m", если [Mod] соответствует ситуации в которой фигурирует память, то в этом подполе + возможно в следующем поле содержится информация о методе вычисления указателя.
[SIB] - 1 байт если запрошен. Не очень понял что именно он делает.
[Dispalcement] - может быть 1, 2 или 4 байта. Если указано, что в качестве операнда выступает указатель на память, вычисленный через регистры, и к нему прибавляется некая констнта, то эта константа задается этим полем.
[Immediate] - может быть 1, 2 или 4 байта. Если в инструкции явно задана константа (не для адресации), то она задана через такую формулу.


Завтра буду учиться на бумажке составлять инструкции. компилятор в голове:)


Сообщение отредактировал DmT - 31.1.2010, 8:11
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Carry - эмулятор., Блог. · Эльфы, их разработка и портирование · Forum
 

11 страниц V < 1 2 3 4 > » 
Ответ в темуСоздание новой темы
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 27.4.2024, 18:00

Форум живёт: