roboforum.ru

Технический форум по робототехнике.

Перевод ASM в СИ

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

Re: Перевод ASM в СИ

Сообщение Dmitry__ » 12 мар 2015, 17:48

Romikgy писал(а):иль ваш компилятор умный больно , иль это вы Tролль 80 lvl ....

Дык, какой ты указал - gcc :D

Romikgy писал(а):PS для нормального возврата из функции , нормальные программисты используют return!

Чудак человек, там есть return - закрывающая скобка функции "}" :wink:
Он тебе даж в комменте написал "//остановить выполнение функции", панимаш? Не выйти, а остановить.
Romikgy писал(а):ибо for это аналог while , а без for попробуйте !!! удивитесь!

Как я должен попробовать? Не возбуждай меня без нужды, тролляка :)
Так? Дык твой gcc также нормально отработает.
Код: Выделить всёРазвернуть
int main (void)
{
   unsigned int i=0;
   while (i<10)
   {
      //if(i==4) {break;}
      printf ("Hello World\n");
      i++;
   }
}
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: Перевод ASM в СИ

Сообщение Romikgy » 12 мар 2015, 18:09

Dmitry__ писал(а): Не возбуждай меня без нужды

вы уже.... так что нужда не требуется ... считайте и далее что вы правы...
die Wahrheit ist irgendwo da draußen
Аватара пользователя
Romikgy
 
Сообщения: 750
Зарегистрирован: 15 ноя 2009, 13:37
Откуда: Porto Franco "Odessa"

Re: Перевод ASM в СИ

Сообщение Raf00084 » 13 мар 2015, 02:03

Еще вопрос, правильно я понимаю что эти строки
Код: Выделить всёРазвернуть
    LADR_0x012E
CLRF STATUS          ; !!Bank!! STATUS - STATUS - RAM - RAM
MOVF LRAM_0x5D,W
ADDWF LRAM_0x5C,W
ADDWF LRAM_0x5B,W
XORWF LRAM_0x59,W
BTFSS STATUS,Z       ; !!Bank!! STATUS - STATUS - RAM - RAM
GOTO LADR_0x0139
MOVF LRAM_0x5A,W
XORLW 0x55           ;   b'01010101'  d'085'  "U"
BTFSC STATUS,Z       ; !!Bank!! STATUS - STATUS - RAM - RAM
GOTO LADR_0x013A
LADR_0x0139
    CALL LADR_0x01C8

перевел так
Код: Выделить всёРазвернуть
void LADR_0X012E (void)
{
W=LRAM_0x5D;
W=(W+LRAM_0x5C);
W=(W+LRAM_0x5B);
W=(LRAM_0x59^W); //значение в регистре 0x59 ксорим со считанным значением в регистре W и сохраняем в W
if(W!=0) //если значение не равно 0 то делаем ьо что в скобках
{
LADR_0x0139();
}
W=(LRAM_0x5A^0x55);
if(W!=0) //если значение не равно 0 то делаем ьо что в скобках
{
LADR_0x013A();
}
LADR_0x01C8();
вроде все правильно, поправте если где-то тупанул.
Аватара пользователя
Raf00084
 
Сообщения: 50
Зарегистрирован: 19 янв 2009, 16:18
Откуда: Хренсбург

Re: Перевод ASM в СИ

Сообщение Raf00084 » 14 мар 2015, 00:09

Скажите чем отличаются эти строки
Код: Выделить всёРазвернуть
MOVF LRAM_0x68,F 

Код: Выделить всёРазвернуть
MOVF LRAM_0x68,W

я так понял что после запятой туда и сохраняется значение полученное в результате выполненной операции.
Аватара пользователя
Raf00084
 
Сообщения: 50
Зарегистрирован: 19 янв 2009, 16:18
Откуда: Хренсбург

Re: Перевод ASM в СИ

Сообщение Angel71 » 14 мар 2015, 00:59

это не серьезно, прекращайте. тыц, тыц, тыц
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18
Предупреждения: -1

Re: Перевод ASM в СИ

Сообщение Dmitry__ » 14 мар 2015, 01:31

Raf00084 писал(а):Еще вопрос, правильно я понимаю что эти строки

В коде есть неоднозначности, что есть "LADR_0x012E", "LADR_0x0139" метки? Тогда их нельзя переводить в си как функции. Если это куски чего-то, то надо уточнять...
Raf00084 писал(а):Скажите чем отличаются эти строки

Raf00084 писал(а):я так понял что после запятой туда и сохраняется значение полученное в результате выполненной операции.

Правильно понял, pic - риск процессор, за счет удлинения поля команды, появляются всякие дополнительные няшки, которые позволяют за одну операцию выполнять несколько действий. Но за это надо платить странным на вид кодом. "MOVF LRAM_0x68,F " берет число из LRAM_0x68 и оставляет его там же :D Эта операция используется для проверки регистра на "0", имеет альтернативное название "test r". В нормальном ассемблере есть дефаулты на операции, и там можно не указывать приемник. Но т.к. ты имеешь дело с реверс инжинирингом, то тебе дизасм выдает все что видит.
Angel71 писал(а):это не серьезно, прекращайте

Думаю ангел прав. Дизассемблируют прошивки люди, которые все зубы сьели на написании программ на конкретном контроллере. А а ты хочешь колупнуть контроллер, который раньше в глаза не видел...
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: Перевод ASM в СИ

Сообщение Angel71 » 14 мар 2015, 01:50

не совсем про это. с реверсом всё просто - мозги, повёрнутые в нужную сторону, желание, упорство и смекалка. бегать на форумы что бы получить ответ, который элементарно на 1-2 страницах выдачи поисковика будет...
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18
Предупреждения: -1

Re: Перевод ASM в СИ

Сообщение ALS » 14 мар 2015, 02:32

ТС, а давайте, я вам подробные комментарии к дизассемблированной прошивке напишу ? Задорого ).
Аватара пользователя
ALS
 
Сообщения: 803
Зарегистрирован: 24 окт 2011, 23:32
Откуда: Севастополь
прог. языки: асм

Re: Перевод ASM в СИ

Сообщение Raf00084 » 14 мар 2015, 02:56

ALS писал(а):ТС, а давайте, я вам подробные комментарии к дизассемблированной прошивке напишу ? Задорого ).

Это юмор??? Мне комментарии не нужны, Я пытаюсь понять как работает программа на асм в какой очередности выполняются команды, значение команд есть в дш. Есть реальные предложения пишите лс.

Добавлено спустя 6 минут 7 секунд:
Dmitry__ писал(а):Думаю ангел прав. Дизассемблируют прошивки люди, которые все зубы сьели на написании программ на конкретном контроллере. А а ты хочешь колупнуть контроллер, который раньше в глаза не видел...

Я не спорю, что это трудно, для начала я создал тему чтоб найти такого человека но увы все только написали, что нету времени. Поэтому решил сам заняться темболее полезно, за неделю узнал уже много. Есть желание помочь пишите личку. Задаю вопросы на форуме потому, что не понимаю как работает та или иная команда, или форум создан не для этих целей?
Аватара пользователя
Raf00084
 
Сообщения: 50
Зарегистрирован: 19 янв 2009, 16:18
Откуда: Хренсбург

Re: Перевод ASM в СИ

Сообщение Dmitry__ » 14 мар 2015, 03:32

Raf00084 писал(а):Задаю вопросы на форуме потому, что не понимаю как работает та или иная команда, или форум создан не для этих целей?

Ну, я, вроде, помогаю :oops: На меня тут тож наезжает кулхацкер тролль :)
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: Перевод ASM в СИ

Сообщение Angel71 » 14 мар 2015, 04:26

Raf00084, вам писали, что это занимает много времени, т.е. намекали, что по деньгам такие услуги стоят соответственно. дело не в самом асме, в таких мк он простой как 5 копеек. трудности начинаются, например когда в оригинале попадаются куски, которые до каждого тактика/битика оптимизированы или в коде хорошенько пошаманили, что бы потом мозг выворачиволо у тех, кто будет в него вникать и т.д. потом вы ещё уточняли, что это всё для портирования. это мягко другой уровень. портировать между мк одного семейства может оказаться проблематичным или невозможным, а вы вообще на другое семейство хотите. короче не важно, может позже столкнётесь и сами поймёте. с форумом всё банально. ответы на простые вопросы во-первых намного быстрей нагуглить. во-вторых изучая документацию, статьи по теме, даташиты, справочники и т.д. вы получаете больше информации. хотите тратить больше времени и меньше полезного узнавать, ну удачи.
http://www.covingtoninnovations.com/noppp/picassem2004.pdf
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18
Предупреждения: -1

Пред.

Вернуться в Микроконтроллеры

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 82