ARMPC : Патчестроение : Форум

Страница 1 из 11: [1] 2 3 4 5 ... 11 »

 den_po:
08.11.09, 19:13
 Так уж сложилось, что отдельной темы для armpc на форуме нет. А пакет время от времени обновляется, и обновления остаются многими незамеченными.

ARM Patch Compiler - набор для компиляции патчей. Делал я его для себя, делал так, как удобно работать мне.
В качестве компилятора в пакете используется FASMARM. Обновления и исходники можно взять на http://arm.flatassembler.net/ (следует учесть, что компилятор в armpc может отличаться от того, что на официальном сайте).

Дальше пойдёт набор бессвязных фактов =)

- Многие не знают, но fasmarm вполне можно использовать и вне armpc, он даёт на выходе бинарник.

- make.bat с давних пор нужно передавать максимум два параметра - имя исходника и имя raw/cxc файла. Базовый адрес передавать не нужно, он определяется автоматически. Если внутри make.bat указать полное имя наиболее часто используемого raw/cxc файла, при запуске make.bat достаточно указать только имя исходника.

- Файл x.inc содержит описания макросов. ADR и MOVL - это не команды, это макросы. Некоторые ключевые слова в x.inc заменяются на макросы (code16, code32, ldr, org), поэтому комплияция со включением x.inc и без него даёт разный результат.

- Макросы в fasmarm, в отличие от команд, регистрозависимы. Макросы ldr/code16/code32/movl продублированы и в верхнем регистре, а вот org нет. Поэтому если вы собираете патч, используйте org, а если вы хотите получить простой бинарник, вам нужен ORG.

- В исходниках можно использовать переменные системного окружения (свойства системы, дополнительно, переменные среды). Для себя я добавил переменную FASMINC, в значении которой указал полный путь к каталогу, где лежит armpc (помните, для вступления действия в силу иногда может потребоваться перезагрузка). Так можно компилировать исходники, лежащие в любых папках, без указания полного пути к x.inc.
Код:
include "%fasminc%\x.inc"


FAR+ARMPC
Мало кто использует FAR Manager в повседневности, а вот я в нём постоянно. И компиляцию запускаю из FAR так, как мне удобно. А конкретней - простое нажатие enter на исходнике собирает патч для z610, нажатие ctrl+pgdn выдаёт меню со списком прошивок, для которых будет собираться патч. Делается оно легко:

f9 -> commands -> file associatoins -> ins -> маска файла *.asm -> описание какое вам нужно -> нужная команда на выполнение для enter и ctrl+pgdn.

У меня команды выглядят примерно так:
Код:
make.bat "!.!" C702_R3EF001

или для ручного ввода имени таргета:
Код:
make.bat "!.!" !?$armpc$target?Z610_R6DA001!

Нужно учесть, что если для типа файла есть только одно действие (как у меня на enter), то оно выполняется молча, а если несколько разных (ассоциация с *.asm добавлена несколько раз, команды на выполнение для ctrl+pgdn отличаются), то показывается меню.

В последней версии armpc компилятор чуть поправлен:
- теперь он понимает movs/cmps/adds и прочие "s" в thumb безо всяких макросов (arm режим в патчах используется нечасто, но кто-то мог допустить ошибку, убирая s у арм-команд);
- ldr и adr работают с адресами без скобок, макрос для этого больше не нужен;
- du в качестве аргумента должны подаваться строки в utf8 (т.е. сам исходник при этом должен быть сохранен в utf8 без BOM).

BOM - специальный маркер, позволяющий другим приложениям однозначно идентифицировать этот файл. В частности сохранить файл с BOM или без BOM можно во встроенном редакторе FAR и в notepad.

Скачать текущую версию


Про использование ещё раз: 
маска файла *.asm -

[ Редактировано den_po в 28.5.15 13:50 ]

 den_po:
18.01.10, 09:27
 поправил автодетект базы для старых телефонов

 den_po:
04.03.10, 04:58
 обновил fasmarm до версии 1.69.11

 GaS:
21.03.10, 08:49
 den_po писал:
теперь он понимает movs/cmps/adds и прочие "s"

что-то он не захотел понять при компиляции патча "win кодировка", пришлось убирать все"S", и ещё почемуто пару патчей нормально скомпилились с "loc"-ами, а один ну ни в какую

 den_po:
21.03.10, 09:22
 
GaS пишет:
den_po писал:
теперь он понимает movs/cmps/adds и прочие "s"

что-то он не захотел понять при компиляции патча "win кодировка", пришлось убирать все"S",

«какие ваши доказательства?» ©

и ещё почемуто пару патчей нормально скомпилились с "loc"-ами, а один ну ни в какую

может, стоит почитать документацию?

 GaS:
21.03.10, 09:56
 den_po, Код:
c:\>make.bat 1.asm phone_app.cxc v.info>log.txt
1.asm [17]:
                LSLS    R0, R7, 1
error: illegal instruction.


 den_po:
21.03.10, 15:17
 GaS,
с конкретно lsl/lsr там какая-то отдельная история была

 Sandre:
22.03.10, 09:14
 Здорово парни,здорово. Почему то компилятор не сохраняет полученное. Лог такой же,как и во всех факах,а файла почему - то нету ни где. Что делать? Пробовал через асмедитор компилировать и просто через сам компилятор,навоза вместе прощивку и исходник на него

 den_po:
22.03.10, 13:03
 Sandre, учись пользоваться командной строкой

 breeze81:
22.03.10, 16:49
 обновите тогда уж в архиве и файл x.inc, конкретно в блоке
LDR fix ldr
DCD fix dw
DCB fix db
CODE16 fix code16
CODE32 fix code32
MOVL fix movl

жутко не хватает

ADR fix adr
Страница 1 из 11: [1] 2 3 4 5 ... 11 »

URL этой темы:
https://mobilefree.justdanpo.ru/newbb_plus/viewtopic.php?topic_id=4458

© 2005-2018 supertrubka.org