2 / 2 / 1
Регистрация: 06.03.2016
Сообщений: 75
1

LPC214X. Нужно добавить комментарии к коду на Си и АСМ.

27.09.2016, 23:37. Показов 642. Ответов 11
Метки нет (Все метки)

Недавно начал изучать программирования процессоров, и наткнулся на ассемблер и в книги по которой учусь нечего не понятно с этим ассемблером. Пожалуйста закомментируйте ф-цию add_sub2()
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <stdio.h>
#include <LPC214X.H>
 
extern "C" void init_serial(void);
 
__asm int add_sub2(int i1, int i2, short func)
{
            STMFD   sp!, {lr}
            CMP     r2, #0
            BLEQ    add2
            CMP     r2, #1
            BLEQ    sub2
            B       exit
add2    ADD     r0, r0, r1
            BX      lr
sub2    SUB     r0, r0, r1
            BX      lr
exit    LDMFD   sp!, {lr}
            BX  lr
}
int main(void)
{
    init_serial();
    int a1 = 14, a2 = 75;
    printf("Add_Sub2 result = %d\n", add_sub2(a1, a2, 0));
    printf("Add_Sub2 result = %d\n", add_sub2(a1, a2, 1));
    while(1);
}
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.09.2016, 23:37
Ответы с готовыми решениями:

LPC214X. Нужно добавить комментарии к коду на Си и АСМ (задание 2)
Закомментируйте пожалуйста эту программу, а то в книги нету толкового объяснения #include...

Добавить комментарии к коду
Здравствуйте. Кто сможет закомментировать код? &lt;script language=&quot;JavaScript&quot;&gt; var elements =...

Добавить комментарии к коду
нужно прокомментировать код mov ax,@data mov ds,ax mov cx,br mov si,offset mas xor ax, ax ...

Добавить комментарии к коду
Кто нибудь напишите подробный комментарий к коду ни СИ. Можно подробней по &quot;#define size 5&quot; и int...

11
196 / 88 / 15
Регистрация: 10.07.2016
Сообщений: 146
28.09.2016, 18:41 2
Я не специалист по такому асму, но даже мне очевидно:
функция в которой: сохраняется в стеке регистр возврата из функции - lr, проверка параметра №3 на 0 и переход на add2 если true с занесением адреса возврата в регистр lr, иначе проверка того же параметра на 1 и переход на sub2 если true с занесением адреса возврата в регистр lr, иначе переход на exit. add2 - сложение первого и второго параметров и возврат по lr, sub2 - вычитание первого и второго параметров и возврат по lr, exit - загрузка из стека регистра lr и переход по нему.
0
81 / 81 / 33
Регистрация: 03.03.2013
Сообщений: 311
29.09.2016, 21:21 3
Vlad_1, самая тупая реализация элементарных действий, которую можно было когда-либо придумать. Это, наверное, разработчики IDE такую писали.
0
2 / 2 / 1
Регистрация: 06.03.2016
Сообщений: 75
30.09.2016, 00:29  [ТС] 4
А почему тупая?
0
Модератор
Эксперт по электронике
8488 / 6315 / 854
Регистрация: 14.02.2011
Сообщений: 21,882
30.09.2016, 06:32 5
Цитата Сообщение от Vlad_1 Посмотреть сообщение
А почему тупая?
много почему
вот эта функция на Си, дословно
C
1
2
3
4
5
6
int add_sub2(int i1, int i2, short func)
{
if(func==0) return i1+i2;
if(func==1)return i1-i2;
return i1;
}
немного поразмыслив, можно привести к виду
C
1
2
3
4
5
6
7
int add_sub2(int i1, int i2, short func)
{
if(func==0)
  return i1+i2;
else
return i1-i2;
}
тогда
C
1
2
3
4
5
6
7
__asm int add_sub2(int i1, int i2, short func)
{
CMP     r2, #0;
ADDEQ     r0, r0, r1;
SUBNE     r0, r0, r1;
BX      lr;
}
0
2 / 2 / 1
Регистрация: 06.03.2016
Сообщений: 75
30.09.2016, 08:07  [ТС] 6
А
Assembler
1
2
exit    LDMFD   sp!, {lr}
            BX  lr
куда потерял?
0
Модератор
Эксперт по электронике
8488 / 6315 / 854
Регистрация: 14.02.2011
Сообщений: 21,882
30.09.2016, 08:26 7
Цитата Сообщение от Vlad_1 Посмотреть сообщение
куда потерял?
зачем он?
разве что
Цитата Сообщение от Novi4ekC Посмотреть сообщение
самая тупая реализация элементарных действий,
0
2782 / 1293 / 167
Регистрация: 28.10.2011
Сообщений: 4,781
Записей в блоге: 6
30.09.2016, 11:10 8
Цитата Сообщение от ValeryS Посмотреть сообщение
немного поразмыслив, можно привести к виду
Если func не равно 0 или 1, то нужно вернуть i1. В вашем коде вместо этого возвращается i1-i2
0
Модератор
Эксперт по электронике
8488 / 6315 / 854
Регистрация: 14.02.2011
Сообщений: 21,882
30.09.2016, 11:27 9
Цитата Сообщение от locm Посмотреть сообщение
Если func не равно 0 или 1, то нужно вернуть i1.
с чего ты взял ???
из данного листинга видно что стек портится
STMFD не в каждой ветке уравнен LDMFD
значит безграмотен
во вторых из примера вызовов видно только 2 значения
но если уж так хочется
C
1
2
3
4
5
6
7
8
9
10
__asm int add_sub2(int i1, int i2, short func)
{
CMP     r2, #1;
BXGT  lr;
CMP     r2, #0;
BXLT lr;
ADDEQ     r0, r0, r1;
SUBNE     r0, r0, r1;
BX      lr;
}
0
2782 / 1293 / 167
Регистрация: 28.10.2011
Сообщений: 4,781
Записей в блоге: 6
30.09.2016, 11:41 10
Цитата Сообщение от ValeryS Посмотреть сообщение
с чего ты взял ???
Асм для ARM не знаю. А взял отсюда.
Цитата Сообщение от ValeryS Посмотреть сообщение
вот эта функция на Си, дословно
C
1
2
3
4
5
6
int add_sub2(int i1, int i2, short func)
{
if(func==0) return i1+i2;
if(func==1)return i1-i2;
return i1;
}
0
196 / 88 / 15
Регистрация: 10.07.2016
Сообщений: 146
30.09.2016, 16:10 11
Assembler
1
ADDEQ     r0, r0, r1;
Изменяет флаги или нет?
0
Модератор
Эксперт по электронике
8488 / 6315 / 854
Регистрация: 14.02.2011
Сообщений: 21,882
30.09.2016, 16:24 12
Цитата Сообщение от Ol44 Посмотреть сообщение
Изменяет флаги или нет?
нет
для изменение флагов нужно поставить суфикс S
2
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.09.2016, 16:24

Добавить комментарии к коду (список - стек)
//Список вида &quot;стек&quot; #include &lt;iostream&gt; using namespace std; //объявляем структуру с...

Добавить комментарии к коду. Сравнение чисел
Здравствуйте, очередной вопрос от меня. Нужно разобрать код (добавив комментарии) Задание:...

Расчетная программа. Добавить комментарии к коду
Закоментировать программный код как можно подробнее Option Explicit Dim polyTest As New...

Нужно добавить комментарии
Может поможет кто чем может пожалуйста. Нужно написать алгоритм решения (//комментарии). ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.