[Logo] Форум DL
  [DL]  Back to home page 
Forum Index ->Учебный процесс ГГУ/СШ 27 ->Проектирование цифровых систем 1, 2
Author Message
Mihail Dolinskiy

Topics: 1560
Messages: 38157

My Profile


Алексей Белоглазов:

Я пишу программу на С, компилирую, получаю в той же директории файл .asm, переименовываю его в .tcpu, открываю его в Winter TCPU Asm, но он даже не компилируется. Ругается на unknown character. Что я делаю не так? 

Я думаю, ты все делаешь правильно. Проблема в некорректной генерации АСМ-программы из С-компилятора.
Надеюсь, Игорь Викторович исправит ее. Но это когда будет.
Ты просто сам исправь (там что-то типа символ "_" нельзя использовать).
Это вполне реально.

Mihail Pasenko

Topics: 0
Messages: 45

My Profile
\Индивидуальные задания\Программирование микроконтроллеров\Битовая обработка\3 - "Циклический сдвиг влево" 54168


unsigned __in __bits(8) a;
unsigned __out __bits(8) res;
void main() {
unsigned __bits(8) t1;
unsigned __bits(8) t2;
unsigned __bits(8) tmp1;
unsigned __bits(8) tmp2;
tmp2=a;
t1=a<<1;
t2=a>>7;
tmp1=t1^t2;
while (tmp1>tmp2){
t1=a>>1;
t2=a<<7;
tmp2=tmp1;
tmp1=t1^t2;
}
res=tmp2;
}


Выдает ошибку чекера "Кгтешьу уккщк"
Mihail Dolinskiy

Topics: 1560
Messages: 38157

My Profile
29.05.2012 19:20:37 29.05.2012 19:20:40 Пасенко Михаил Архитектура вычислительных систем (М3/ПМ4) - 2012 3. Циклический сдвиг влево 0 Ошибка чекера причина выхода:Runtime Error 128 src.tc DelTA3 at Nit_server
Igor Korshunov

Topics: 6
Messages: 1536

My Profile


Михаил Пасенко:

\Индивидуальные задания\Программирование микроконтроллеров\Битовая обработка\3 - "Циклический сдвиг влево" 54168


unsigned __in __bits(8) a;
unsigned __out __bits(8) res;
void main() {
unsigned __bits(8) t1;
unsigned __bits(8) t2;
unsigned __bits(8) tmp1;
unsigned __bits(8) tmp2;
tmp2=a;
t1=a<<1;
t2=a>>7;
tmp1=t1^t2;
while (tmp1>tmp2){
t1=a>>1;
t2=a<<7;
tmp2=tmp1;
tmp1=t1^t2;
}
res=tmp2;
}


Выдает ошибку чекера "Кгтешьу уккщк" 

Перетестировано:

[TEST1]: Тест не прошел: RES dec[1]: 196.
 
Mihail Dolinskiy

Topics: 1560
Messages: 38157

My Profile


Игорь Коршунов:


Сергей Семенцов:

Вот исходник:

unsigned __in __bits(6) X;
unsigned __in __bits(6) Y;

unsigned __out __bits(1) OUT;

void main(){
unsigned __bits(6) XX = X;
unsigned __bits(6) YY = Y;
YY>>=3;
XX>>=3;

unsigned __bits(3) Y1 = YY;
unsigned __bits(3) X1 = XX;

unsigned __bits(3) Y2 = Y;
unsigned __bits(3) X2 = X;


if ( (X1==Y1) || (X1==Y2) || (X2==Y1) || (X2==Y2) )
OUT = 1;
else
OUT = 0;


Промежуточные переменные по 3 бита корректно в Си для TCPU не поддерживаются. 
Igor Korshunov

Topics: 6
Messages: 1536

My Profile
Условие задачи:
Найти произведение двух чисел. Ограничение исходного кода - 64 байта.

Формат ввода
R1 - первое число.
R2 - второе число.


Формат вывода
A - результат. 



Почему не проходит тесты такое решение:
unsigned __in __bits(8) R1;
unsigned __in __bits(8) R2;

unsigned __out __bits(8) A;

void main(){
	A=R1*R2;

}


Обращаться к внутренним регистрам и памяти TCPU можно через зарезервированные имена: _A, _B, _R1, _R2, _Data[0xff].
При использовании внутренних регистров и памяти обязательно следует: в начале программы сохранить регистры во внутренние переменные, причем первым нужно сохранить R1; только в конце программы можно записать результат в соответствующий регистр.

Правильное решение для этой задачи.

void main()
{
	int r1 = _R1;
	int r2 = _R2;
	_A = r1 * r2;
}

Igor Korshunov

Topics: 6
Messages: 1536

My Profile
Почему неправильно работает программа:

void main()
{
	int	i, k = 0, j = _R1;
	for (i=0, k = 0; ; i++) {
		int c = _Data[j++];
		if (c == '*')
			break;
		if (c == 'a')
			k++;
	}
	_A = k;
} 


Из теории:

При использовании внутренних регистров и памяти обязательно следует:
в начале программы сохранить регистры во внутренние переменные, причем первым нужно сохранить R1
только в конце программы можно записать результат в соответствующий регистр
 

В начале программе происходит инициализация переменной к. При этом затирается значение регистра R1.
Pavel Okrut

Topics: 1
Messages: 22

My Profile
в задаче (Экзамен\Индивидуальные задания\С-TCPU\Программы по схемам\Логические элементы\10 - "Домино" 83393 Задача Чаетской Ольги) при моём решении пишет ошибку "недостаточно памяти для размещения программы"
unsigned __in __bits (6)X;
unsigned __in __bits (6)Y;

unsigned __out __bits(1)OUT;

void main()
{
unsigned a = X;
unsigned b = Y;
int res=0;
int sc=0;
int res1=0;
a = ~(a ^ b);
while (a && sc<3)
{
if (a & 1) res++;
a >>= 1;
sc++;
}
while(a)
{
if (a & 1) res1++;
a >>= 1;
}
if((res==3) || (res1==3)) OUT=1;
else OUT=0;
}
Mihail Dolinskiy

Topics: 1560
Messages: 38157

My Profile


Павел Окрут:

в задаче (Экзамен\Индивидуальные задания\С-TCPU\Программы по схемам\Логические элементы\10 - "Домино" 83393 Задача Чаетской Ольги) при моём решении пишет ошибку "недостаточно памяти для размещения программы" 
Кодовая память программы процессора TCPU всего 256 байт. Это сообщение как раз и говорит о том, что в результате компиляции исходного текста втоей программы получилась программа в машинных кодах длиной больше чем 256 байт, и поэтому её невозможно загрузить в кодовую память процессора TCPU.

Есть варианты
1) Попытаться написать более оптимальный код
2) Перейти к решению другой задачи.

Используй тег code=cpp для более красивого представления программы на форуме

unsigned __in __bits (6)X;
unsigned __in __bits (6)Y;

unsigned __out __bits(1)OUT;

void main()
{
	unsigned a = X;
	unsigned b = Y;
	int res=0;
	int sc=0;
	int res1=0;
	a = ~(a ^ b);
	while (a && sc<3)
	{
	  if (a & 1) res++;
	  a >>= 1;
	  sc++;
	}
	while(a)
	{
	  if (a & 1) res1++;
	  a >>= 1;
	}
	if((res==3) || (res1==3)) OUT=1;
	else OUT=0;
}

Pavel Golub

Topics: 5
Messages: 120

My Profile
Странная ситуация с winter компиляторами.
На dl tcpu не компилирует вообще ничего даже файл с одной строкой nop. Генерация asm из C компилятора содержит подчеркивание и странную функцию func_0 после неиспольуземой метки virtual_table. И если ее убрать hex файлы слетают по времени.
Mihail Dolinskiy

Topics: 1560
Messages: 38157

My Profile
Игорь Викторович исправил ошибку - уже можно работать.
 
Forum Index ->Учебный процесс ГГУ/СШ 27 ->Проектирование цифровых систем 1, 2
Time:0,094