Автор |
Сообщение |
12.12.2023 10:33:41
Тема: Re:Применение искусственного интеллекта для обучения ассемблеру, HLCCAD, C-MPA
|
Андрей Щербак
Темы: 0
Сообщений: 23
Мой профиль
|
Код функции для перевода числа из 8 бит в 16 (cbw)
unsigned __in __bits(8) x8;
unsigned __out __bits(16) x16;
//From 8 to 16
unsigned __bits(16) CBW(unsigned __bits(8) x8){
x16 = 0;
x16 = (x16 << 8) | x8;
return x16;
}
//From 8 to 16
void main() {
x16 = CBW(x8);
}
Был проверен на моделировании в HLCCAD. Перевод выполнен правильно.
Работаю над проверкой в арифметических задачах для CMPA.
|
12.12.2023 12:22:45
Тема: Re:Применение искусственного интеллекта для обучения ассемблеру, HLCCAD, C-MPA
|
Юрий Матафонов
Темы: 1
Сообщений: 16
Мой профиль
|
Юрий Матафонов:
Михаил Долинский:
Получается есть два рабочих варианта
unsigned __bits(16) MS(unsigned __bits(3) A,
unsigned __bits(16) X0,
unsigned __bits(16) X1,
unsigned __bits(16) X2
...
)
...
if (A==0) MS = X0;
if (A==1) MS = X1;
if (A==2) MS = X2;
...
и когда X передаётся как 2^A-битный вектор (с выделением сдвигами отдельных элементов).
Наверно первый удобнее.
для арифметических схем нужно ещё реализовать
x16=CBW(x8)
x32=CWD(x16)
s16=SUM(A16,B16)
s16=ISUB(A16,B16)
p32=iMUL(A16,B16)
d16=iDIV(A32,B16)
x16=x32 // скорей всего уже правильно работает
R16=MS(A1,X16_0,X16_1)
Тогда схема условного арифметического выражения реализуется в С-МПА
как последовательность этих операторов
в порядке вычислений
и с правильными названиями переменных, чтобы передавать сигналы
с верхних блоков в нижние (в программе)
как с левых на правые (в схеме)
Для реализации всех остальных схем нужно
сделать также блоки
DC
CD
MS
(Матафонов Юра, ПИ-21 уже занимается)
Тогда для того, чтобы добиться от ИИ помощи в генерации схем для HLCCAD,
достаточно научить его писать С-МПА программы, вызывающие такие блоки
в нужной последовательности и правильно называя переменные.
Программы можно будет проверять, автоматически генерируя схемы
и отправляя их на тестирование.
Рисовать схему в HLCCAD можно глядя на текст такой программы.
Нарисованную схему тоже потом можно отправлять на тестирование.
Совсем круто, чтобы ИИ писал такую программу прямо с условия задачи.
Экзамен\Индивидуальные задания\Проектирование цифровых устройств\Комбинационные схемы\5 - "Сумматор" 12579 Еременко Оксана, ПМ4, апрель 2005
в новом окне (Установлена: 26.12.2003)
http://dl.gsu.by/task.jsp?nid=2293170&cid=1335
unsigned __in __bits(16) A;
unsigned __in __bits(16) B;
unsigned __in __bits(1) C;
unsigned __out __bits(16) S;
unsigned __out __bits(1) P;
unsigned __bits(17) SUM(unsigned __bits(16) A, unsigned __bits(16) B, unsigned __bits(1) C0) {
unsigned __bits(17) SUM;
SUM = A + B + C0;
return SUM;
}
void main() {
S = SUM(A, B, C);
P = SUM(A, B, C) >> 16;
}
Дешифратор
?
unsigned __in __bits(3) X;
unsigned __in __bits(1) CS;
unsigned __out __bits(8) Y;
unsigned __bits(8) DC(unsigned __bits(1) CS, unsigned __bits(3) X) {
if (CS == 0)
return 0;
unsigned __bits(8) d;
d = 1;
d = d << X;
return d;
}
void main() {
Y = DC(CS, X);
}
Экзамен\Индивидуальные задания\Проектирование цифровых устройств\Обработка битов\6 - "Приоритетный дешифратор" 41250 Мохорев И., ПОИТ-36, март 2006
в новом окне (Установлена: 31.03.2006)
http://dl.gsu.by/task.jsp?nid=2293318&cid=1335
unsigned __in __bits(3) X;
unsigned __out __bits(8) Y;
unsigned __bits(8) DC(unsigned __bits(3) X) {
unsigned __bits(8) d;
d = 255;
d = d >> (8-X);
return d;
}
void main() {
Y = DC(X);
}
Экзамен\Индивидуальные задания\С-TCPU\Программы по схемам\Обработка битов\16 - "Обратный шифратор" 83536 Юрий Кадетов
в новом окне (Установлена: 22.03.2009)
http://dl.gsu.by/task.jsp?nid=2291226&cid=1335
unsigned __in __bits(8) X;
unsigned __out __bits(3) Y;
unsigned __out __bits(1) G;
unsigned __bits(4) CD(unsigned __bits(8) X) {
unsigned __bits(4) YG;
unsigned __bits(3) Y;
unsigned __bits(1) G;
if (X != 0)
G = 1;
else {
G = 0;
return 0;
}
int i;
i = 0;
while (X != 1) {
i++;
X = X >> 1;
}
Y = i;
YG = Y;
YG = YG << 1;
YG += G;
return YG;
}
void main() {
G = CD(X);
Y = CD(X) >> 1;
}
Шифратор
?
unsigned __bits(4) CD(unsigned __bits(8) X) {
unsigned __bits(4) YG;
unsigned __bits(3) Y;
unsigned __bits(1) G;
if (X != 0)
G = 1;
else {
G = 0;
return 0;
}
int i;
i = 0;
while (!(X & 1)) {
i++;
X = X >> 1;
}
Y = i;
YG = Y;
YG = YG << 1;
YG += G;
return YG;
}
void main() {
G = CD(X);
Y = CD(X) >> 1;
}
Мультиплексор
?
unsigned __in __bits(8) X;
unsigned __in __bits(3) A;
unsigned __out __bits(1) Y;
unsigned __bits(1) MS(unsigned __bits(8) X, unsigned __bits(3) A) {
return ((X >> A) & 1);
}
void main() {
Y = MS(X, A);
}
Там где знак '?' я проверял вручную / не успел проверить.
CBW
unsigned __in __bits(8) A;
unsigned __out __bits(16) B;
unsigned __bits(8) CBW(unsigned __bits(8) A) {
return A;
}
void main() {
B = CBW(A);
}
CWD
unsigned __in __bits(16) A;
unsigned __out __bits(32) B;
unsigned __bits(16) CWD(unsigned __bits(16) A) {
return A;
}
void main() {
B = CWD(A);
}
ISUB
int __in __bits(16) A;
int __in __bits(16) B;
int __out __bits(16) C;
int __bits(16) ISUB(int __bits(16) A, int __bits(16) B) {
int __bits(16) C;
C = A - B;
return C;
}
void main() {
C = ISUB(A,B);
}
IMUL
int __in __bits(16) A;
int __in __bits(16) B;
int __out __bits(32) C;
int __bits(32) IMUL(int __bits(16) A, int __bits(16) B) {
int __bits(32) C;
C = A * B;
return C;
}
void main() {
C = IMUL(A,B);
}
MUL
unsigned __in __bits(8) A;
unsigned __in __bits(8) B;
unsigned __out __bits(16) C;
unsigned __bits(16) MUL(unsigned __bits(8) A, unsigned __bits(8) B) {
unsigned __bits(16) C;
C = A * B;
return C;
}
void main() {
C = MUL(A,B);
}
IDIV
int __in __bits(32) A;
int __in __bits(32) B;
int __out __bits(16) C;
int __bits(16) IDIV(int __bits(32) A, int __bits(32) B) {
int __bits(16) C;
C = A / B;
return C;
}
void main() {
C = IDIV(A,B);
}
DIV
unsigned __in __bits(16) A;
unsigned __in __bits(16) B;
unsigned __out __bits(16) C;
unsigned __bits(16) DIV(unsigned __bits(16) A, unsigned __bits(16) B) {
if (B == 0)
return -1;
return A/B;
}
void main() {
C = DIV(A,B);
}
x32Tox16
unsigned __in __bits(32) A;
unsigned __out __bits(16) B;
unsigned __bits(16) x32Tox16(unsigned __bits(32) A) {
return A;
}
void main() {
B = x32Tox16(A);
}
CMP
unsigned __in __bits(8) A;
unsigned __in __bits(8) B;
int __in __bits(2) A;
int __bits(2) CMP(unsigned __bits(8) A, unsigned __bits(8) B) {
if (A > B)
return 1;
if (A == B)
return 0;
if (A < B)
return -1;
}
void main () {
A = CMP(A,B);
}
ICMP
int __in __bits(32) A;
int __in __bits(32) B;
int __in __bits(2) A;
int __bits(2) ICMP(int __bits(32) A, int __bits(32) B) {
if (A > B)
return 1;
if (A == B)
return 0;
if (A < B)
return -1;
}
void main () {
A = ICMP(A,B);
}
MSb8x2
unsigned __in __bits(8) Zero;
unsigned __in __bits(8) One;
unsigned __in __bits(1) A;
unsigned __out __bits(8) Y;
unsigned __bits(8) MSb8x2(unsigned __bits(8) Zero, unsigned __bits(8) One, unsigned __bits(1) A) {
if (A)
return One;
else
return Zero;
}
void main () {
Y = MSb8x2(Zero, One, A);
}
|
12.12.2023 14:39:26
Тема: Re:Применение искусственного интеллекта для обучения ассемблеру, HLCCAD, C-MPA
|
Александр Дудинский
Темы: 0
Сообщений: 17
Мой профиль
|
Юрий Матафонов:
Юрий Матафонов:
Михаил Долинский:
CBW
unsigned __in __bits(8) A;
unsigned __out __bits(16) B;
unsigned __bits(8) CBW(unsigned __bits(8) A) {
return A;
}
void main() {
B = CBW(A);
}
CWD
unsigned __in __bits(16) A;
unsigned __out __bits(32) B;
unsigned __bits(16) CWD(unsigned __bits(16) A) {
return A;
}
void main() {
B = CWD(A);
}
Лучше написать:
unsigned __bits(16) CBW(unsigned __bits(8) A){
return A;
}
Т.е. функция будет возвращать 16-битное значение.
Для CWD соответственно:
unsigned __bits(32) CWD(unsigned __bits(16) A){
return A;
}
|
12.12.2023 16:03:36
Тема: Re:Применение искусственного интеллекта для обучения ассемблеру, HLCCAD, C-MPA
|
Валерия Коваленко
Темы: 0
Сообщений: 11
Мой профиль
|
Оценка\Индивидуальные задания\По выбору\Проектирование - подготовка к контрольному срезу\Сам-п8 - "Задача №8" 31438 Литовченко Мария
https://dl.gsu.by/task.jsp?nid=2301695&cid=1336
int __in __bits(8) A9;
int __in __bits(8) B7;
int __in __bits(16) X;
int __in __bits(16) Y;
int __out __bits(16) RES;
unsigned __bits(16) CBW(unsigned __bits(8) A) {return A;}
unsigned __bits(32) CWD(unsigned __bits(16) A) {return A;}
int __bits(16) ISUB(int __bits(16) A, int __bits(16) B) {int __bits(16) C;C = A - B; return C;}
int __bits(16) SUM(int __bits(16) A, int __bits(16) B) {int __bits(16) C;C = A + B; return C;}
int __bits(32) IMUL(int __bits(16) A, int __bits(16) B) {int __bits(32) C;C = A * B; return C;}
int __bits(16) IDIV(int __bits(32) A, int __bits(32) B) {int __bits(16) C;C = A / B; return C;}
int __bits(2) ICMP(int __bits(32) A, int __bits(32) B) {if (A > B)return 1;if (A == B)return 0;if (A < B)return -1;}
unsigned __bits(8) MSb8x2(unsigned __bits(8) Zero, unsigned __bits(8) One, unsigned __bits(1) A) {if (A)return One;elsereturn Zero;}
void main(){
int __out __bits(16) a916=CBW(A9);
int __out __bits(16) b716=CBW(B7);
int __out __bits(32) a932=CWD(a916);
int __out __bits(32) b732=CWD(b716);
int __out __bits(32) x32=CWD(X);
int __out __bits(32) y32=CWD(Y);
int __out __bits(32) s=CWD((x*a9-b7));
(x*a9)=IMUL(X,a916);
(x*a9-b7)=ISUB((x*a9),b716);
(y+x*a9-b7)=SUM((x*a9-b7),Y);
res1=IDIV(s,y32);
(y+a9)=SUM(Y,a916);
((y+a9)*x)=IMUL((y+a9),X);
((y+a9)*x/y)=IDIV(((y+a9)*x),y32);
res2=ISUB(((y+a9)*x/y),b716);
(x*y)=IMUL(X,Y);
m=ICMP((x*y),);
}
|
12.12.2023 16:04:43
Тема: Re:Применение искусственного интеллекта для обучения ассемблеру, HLCCAD, C-MPA
|
Алина Школьникова
Темы: 0
Сообщений: 15
Мой профиль
|
Командные олимпиады\Архитектура вычислительных систем\Команды ММХ\Контрольный срез (Пример 6)\Базовый\П - "Задача №6" 31436 Литовченко Мария
http://dl.gsu.by/task.jsp?nid=2348459&cid=1336
int __in __bits(16) a;
int __in __bits(16) b;
int __in __bits(8) c;
int __in __bits(8) d;
int __out __bits(16) c16;
int __out __bits(16) d16;
int __out __bits(32) a32;
int __out __bits(32) b32;
int __out __bits(32) c32;
int __out __bits(32) d32;
int __out __bits(16) RES;
unsigned __bits(16) CBW(unsigned __bits(8) A) {
return A;
}
unsigned __bits(32) CWD(unsigned __bits(16) A) {
return A;
}
int __bits(16) ISUB(int __bits(16) A, int __bits(16) B) {
int __bits(16) C;
C = A - B;
return C;
}
int __bits(16) SUM(int __bits(16) A, int __bits(16) B) {
int __bits(16) C;
C = A + B;
return C;
}
int __bits(32) IMUL(int __bits(16) A, int __bits(16) B) {
int __bits(32) C;
C = A * B;
return C;
}
int __bits(16) IDIV(int __bits(32) A, int __bits(32) B) {
int __bits(16) C;
C = A / B;
return C;
}
int __bits(2) ICMP(int __bits(32) A, int __bits(32) B) {
if (A > B)
return 1;
if (A == B)
return 0;
if (A < B)
return -1;
}
void main(){
c16=CBW(c);
d16=CBW(d);
a32=CWD(a);
b32=CWD(b);
c32=CWD(c16);
d32=CWD(d16);
int __bits(16) -a=ISUB(0,a);
int __bits(32) ab=IMUL(-a,b);
int __bits(32) cd=IMUL(c,d);
int __bits(16) dd=ab;
int __bits(16) cc=cd;
int __bits(16) abc=ISUB(ab,cc);
int __bits(16) ac=IDIV(a32,c32);
int __bits(16) bd=IDIV(b32,d32);
int __bits(16) sm1=SUM(abd,ac);
int __bits() sm2=SUM(sm1,bd);
r1=sm2;
ab=SUM(a,b);
aab=IMUL(ab,a);
pr1=IMUL(aab,b);
int __bits(16) pp1=pr1;
pr2=IMUL(pp1,c16);
int __bits(16) pp2=pr2;
prz3=IMUL(pp2,d16);
dc=ISUB(c16,d16);
}
|
12.12.2023 16:06:57
Тема: Re:Применение искусственного интеллекта для обучения ассемблеру, HLCCAD, C-MPA
|
Татьяна Пыршина
Темы: 0
Сообщений: 19
Мой профиль
|
Оценка\Индивидуальные задания\По выбору\Проектирование - подготовка к контрольному срезу\Сам-п1 - "Задача №1" 31431 Литовченко Мария
http://dl.gsu.by/task.jsp?nid=2301688&cid=1336
int __in __bits(8) c;
int __in __bits(8) d;
int __in __bits(16) a;
int __in __bits(16) b;
int __out __bits(16) res;
unsigned __bits(16) CBW(unsigned __bits(8) A) {return A;}
unsigned __bits(32) CWD(unsigned __bits(16) A) {return A;}
int __bits(16) ISUB(int __bits(16) A, int __bits(16) B) {int __bits(16) C;C = A - B;return C;}
int __bits(16) SUM (int __bits(16) A, int __bits(16) B) {int __bits(16) C;C = A + B;return C;}
int __bits(32) IMUL(int __bits(16) A, int __bits(16) B) {int __bits(32) C;C = A * B;return C;}
int __bits(16) IDIV(int __bits(32) A, int __bits(32) B) {int __bits(16) C;C = A / B;return C;}
int __bits(2) ICMP(int __bits(32) A, int __bits(32) B) {if (A > B)return 1;if (A == B)return 0;if (A < B)return -1;}
unsigned __bits(8) MSb8x2(unsigned __bits(8) Zero, unsigned __bits(8) One, unsigned __bits(1) A) {if (A)return One;else return Zero;
}
void main(){
int __out __bits (16) c16=cbw(c);
int __out __bits (16) d16=cbw(d);
int __out __bits (32) a32=cwd(a);
int __out __bits (32) b32=cwd(b);
int __out __bits (32) c32=cwb(c16);
int __out __bits (16) a/b=idiv(a32,b32);
int __out __bits (16) a/b+c=sum(
}
|
12.12.2023 16:07:06
Тема: Re:Применение искусственного интеллекта для обучения ассемблеру, HLCCAD, C-MPA
|
Виктория Богомазова
Темы: 0
Сообщений: 8
Мой профиль
|
Богомазова ПО-21
Сначала делала таким образом ветки из Задания 11
int __bits(2) ICMP(int __bits(32) xy32, int __bits(32) nul32) {
if (xy32 > nul32)
return 1;
if (xy32 == nul32)
return 0;
if (xy32 < nul32)
return 0;
}
unsigned __bits(8) MSb8x2(unsigned __bits(8) Zero, unsigned __bits(8) One, unsigned __bits(1) A) {
if (A)
return One;
else
return Zero;
}
unsigned __bits(16) CWD;
unsigned __bits(8) CBW;
int __bits(16) IDIV;
int __bits(16) ISUB;
int __bits(32) IMUL;
int __bits(8) SUM;
void main() {
A916 = CBW(A98);
B716 = CBW(B78);
s16 = ISUB(A916,B716);
s32 = CWD(s16);
xy32 = IMUL(x16,y16);
s132 = SUM(s32,xy32);
x32 = CBW(x16);
r116 = IDIV(s132,x32);
s28 = SUM(A98,B78);
x32 = CWD(x16);
y32 = CWd(y16);
d216 = IDIV(x32,y32);
s216 = CBW(s28);
pr232 = iMUL(s216,d216);
r216 = iSUB(pr2[15-0],x16);
nul32 = 0;
A = ICMP(xy32,nul32);
res = MSb8x2(r116, r216, A);
}
Потом предложили делать другим образом(не доделала):
int__in __bits(8) A9;
int__in __bits(8) B7;
int__in __bits(16) X;
int__in __bits(16) Y;
int__out __bits(16) RES;
unsigned __bits(16) CBW(unsigned __bits(8) A) {return A;}
unsigned __bits(32) CWD(unsigned __bits(16) A) {return A;}
int __bits(16) ISUB(int_bits(16) A, int __bits(16) B) {}
|
12.12.2023 16:07:11
Тема: Re:Применение искусственного интеллекта для обучения ассемблеру, HLCCAD, C-MPA
|
Александр Сохор
Темы: 0
Сообщений: 18
Мой профиль
|
Сохор ПО-21
Сначала делал данные ветки из задания "Задача 12"
https://dl.gsu.by/task.jsp?nid=2301699&cid=1336
int __bits(2) ICMP(int __bits(32) A, int __bits(32) B) {
if (A > B)
return 0;
if (A == B)
return 0;
if (A < B)
return 1;
}
unsigned __bits(8) MSb8x2(unsigned __bits(16) Zero, unsigned __bits(16) One, unsigned __bits(1) A) {
if (A)
return One;
else
return Zero;
}
void main(){
A916 = CBW(A98)
B716 = CBW(B78)
X32 = CWD(X16)
Y32 = CWD(Y16)
ab32=IMUL(A916,B716)
raz16= ISUB(ab[15-0],X16)
raz32 = CWD(raz16)
summa32 = SUM(raz32,Y32)
rez116 = IDIV(summa32, X32)
const16 = 1
summ16 = SUM(A916,const)
t32 = IMUL(summ16,X16)
B732=CWD(B716)
del16 = IDIV(B732, Y32)
del32 = CWD(del16)
vet32 = SUM(t32, del32)
res216 = ISUB(vet[15-0],y16)
ds32 = imul(X16,Y16)
A = ICMP(ds32,0);
Y = MSb8x2(res1_16, res2_16, A);
}
Потом предложили делать другим образом(задача недоделана)
|
12.12.2023 16:08:07
Тема: Re:Применение искусственного интеллекта для обучения ассемблеру, HLCCAD, C-MPA
|
Александр Дудинский
Темы: 0
Сообщений: 17
Мой профиль
|
Командные олимпиады\Архитектура вычислительных систем\Процессоры баз данных\Контрольный срез (Пример 9)\Базовый\С - "Задача №9" 101452 Володин Валерий
в новом окне (Установлена: 23.10.2010)
https://dl.gsu.by/task.jsp?nid=2348683&cid=1336
int __in __bits(16) X;
int __in __bits(16) Y;
int __in __bits(8) A9;
int __in __bits(8) B7;
int __out __bits(16) RES;
int __bits(16) CBW(int __bits(8) A){
return A;
}
int __bits(32) CWD(int __bits(16) A){
return A;
}
int __bits(16) ISUB(int __bits(16) A, int __bits(16) B){
int __bits(16) C;
C=A-B;
return C;
}
int __bits(32) IMUL(int __bits(16) A, int __bits(16) B){
int __bits(32) C;
C=A*B;
return C;
}
int __bits(16) IDIV(int __bits(32) A, int __bits(32) B){
int __bits(16) C;
C=A/B;
return C;
}
int __bits(16) SUM(int __bits(16) A, int __bits(16) B){
int __bits(16) C;
C=A+B;
return C;
}
/*int __bits(2) ICMP(int __bits(32) A, int __bits(32) B){
if(A>B) return 1;
if(A==B) return 0;
if(A<B) return -1;
}*/
int __bits(4) ICMP(int __bits(32) A, int __bits(32) B){
int __bits(4) C=0;
if(A>B) C++;
C=C<<1;
if(A<B) C++;
C=C<<1;
if(A==B) C++;
return C;
}
int __bits(16) MS(int __bits(1) A, int __bits(16) X1, int __bits(16) X2){
if(A) return X1;
else return X2;
}
void main(){
int __bits(16) vetv1;
int __bits(16) vetv2;
int __bits(16) A=CBW(A9);
int __bits(16) B=CBW(B7);
int __bits(32) XX=CWD(X);
int __bits(32) YY=CWD(Y);
int __bits(32) AA=CWD(A);
int __bits(32) BB=CWD(B);
//--------------------------
vetv1=ISUB(Y,X);
vetv1=SUM(vetv1,A);
int __bits(32) mul11=IMUL(B,Y);
vetv1=ISUB(vetv1,mul11);
int __bits(32) v1=CWD(vetv1);
v1=IDIV(v1,XX);
vetv1=v1;
//---------------------------
vetv2=SUM(Y,X);
vetv2=IMUL(vetv2,A);
vetv2=IDIV(vetv2,BB);
vetv2=ISUB(vetv2,Y);
int __bits(32) p;
p=IMUL(X,Y);
int __bits(1) f;
int __bits(4) cmp;
cmp=ICMP(p,0);
if(cmp&1) f=1;
else f=0;
RES=MS(f,vetv2,vetv1);
}
Код не работает) И ICMP описан по другому.
|
12.12.2023 17:47:25
Тема: Re:Применение искусственного интеллекта для обучения ассемблеру, HLCCAD, C-MPA
|
Даниил Акунец
Темы: 0
Сообщений: 12
Мой профиль
|
Лучшие 20 Обсудить задачу в форуме (-): Экзамен\Индивидуальные задания\Контрольные срезы\C-МПА\Сам-с13 - "Задача №13" 101456 Володин Валерий
в новом окне (Установлена: 23.10.2010)
https://dl.gsu.by/task.jsp?nid=2290680&cid=1335
Для каждой функции в получаемых и возвращаемых был изменён тип данных на int. MSb8x2 был сделан для 16 битов(просто изменена размерность для каждого значения). ICMP был изменён под условие конкретной задачи, т.к. неправильно выполнялся MSb16x2
int __in __bits(8) A9;
int __in __bits(8) B7;
int __in __bits(16) X;
int __in __bits(16) Y;
int __out __bits(16) RES;
int __bits(16) CBW(int __bits(8) A) {return A;}
int __bits(32) CWD(int __bits(16) A) {return A;}
int __bits(16) ISUB(int __bits(16) A, int __bits(16) B) {int __bits(16) C;C = A - B; return C;}
int __bits(16) SUM(int __bits(16) A, int __bits(16) B) {int __bits(16) C;C = A + B; return C;}
int __bits(32) IMUL(int __bits(16) A, int __bits(16) B) {int __bits(32) C;C = A * B; return C;}
int __bits(16) IDIV(int __bits(32) A, int __bits(32) B) {int __bits(16) C;C = A / B; return C;}
int __bits(2) ICMP(int __bits(32) A, int __bits(32) B) {if (A < B)return 1; else return 0;}
int __bits(16) MSb16x2(int __bits(16) Zero, int __bits(16) One, int __bits(1) A) {if (A)return One; else return Zero;}
void main(){
int __out __bits(16) a916=CBW(A9);
int __out __bits(16) b716=CBW(B7);
int __out __bits(32) a932=CWD(a916);
int __out __bits(32) b732=CWD(b716);
int __out __bits(32) x32=CWD(X);
int __out __bits(32) y32=CWD(Y);
int __out __bits(16) v11;
v11=ISUB(X,Y);
int __out __bits(32) v12;
v12=IMUL(v11,a916);
int __out __bits(16) v13;
v13=SUM(v12,b716);
int __out __bits(16) res1;
res1=IDIV(v13,y32);
int __out __bits(16) v21;
v21=SUM(Y,X);
int __out __bits(16) v22;
v22=IDIV(v21,a932);
int __out __bits(16) v23;
v23 = ISUB(v22,b716);
int __out __bits(32) res2;
res2=IMUL(v23, X);
int __out __bits(32) if1;
int __out __bits(32) if2 = 0;
int __out __bits(2) if0;
if1 = IMUL(X,Y);
if0 = ICMP(if1,if2);
RES = MSb16x2(res1,res2,if0);
}
Решение прошло в CMPA, в проектировании пишет что нельзя генерировать схемы
Пропуски 19.09 и 9.10
|
12.12.2023 19:57:51
Тема: Re:Применение искусственного интеллекта для обучения ассемблеру, HLCCAD, C-MPA
|
Дима Козубовский
Темы: 0
Сообщений: 13
Мой профиль
|
Козубовский Дима, ИТП-31. Пропуск за 06.11.23
http://dl.gsu.by/task.jsp?nid=2290678&cid=1335
int __in __bits(8) A9;
int __in __bits(8) B7;
int __in __bits(16) X;
int __in __bits(16) Y;
int __out __bits(16) RES;
int __bits(16) CBW(int __bits(8) A) {return A;}
int __bits(32) CWD(int __bits(16) A) {return A;}
int __bits(16) ISUB(int __bits(16) A, int __bits(16) B) {
int __bits(16) C;
C = A - B;
return C;
}
int __bits(16) SUM(int __bits(16) A, int __bits(16) B) {
int __bits(16) C;
C = A + B;
return C;
}
int __bits(32) IMUL(int __bits(16) A, int __bits(16) B) {
int __bits(32) C;
C = A * B;
return C;
}
int __bits(16) IDIV(int __bits(32) A, int __bits(32) B) {
int __bits(16) C;
C = A / B;
return C;
}
int __bits(2) ICMP(int __bits(32) A, int __bits(32) B) {
if (IMUL(X,Y)<0) return 0;
else return 1;
}
int __bits(16) MSb8x2(int __bits(16) Zero, int __bits(16) One, int __bits(1) A) {
if (A)return One;
else return Zero;
}
void main(){
int __bits(16) a916=CBW(A9);
int __bits(16) b716=CBW(B7);
int __bits(32) a932=CWD(a916);
int __bits(32) b732=CWD(b716);
int __bits(32) x32=CWD(X);
int __bits(32) y32=CWD(Y);
int mul1=IMUL(X,Y);
int sub1=ISUB(a932,b732);
int sum1=SUM(sub1,mul1);
int div1=IDIV(sum1,x32);
int sum2=SUM(b716,a916);
int mul2=IMUL(sum2,X);
int div2=IDIV(mul2,y32);
int sub2=ISUB(div2,x32);
int cmp=ICMP(mul1,0);
RES=MSb8x2(sub2,div1,cmp);
}
|
12.12.2023 23:22:55
Тема: Re:Применение искусственного интеллекта для обучения ассемблеру, HLCCAD, C-MPA
|
Михаил Долинский
Темы: 2010
Сообщений: 47872
Мой профиль
|
Даниил Акунец:
Решение прошло в CMPA, в проектировании пишет что нельзя генерировать схемы
В Обучение - С-МПА Добавлена Папка "HLCCAD from C-MPA - arithm"
там все 30 задач и они принимаются только если схема была сгенерирована из C-MPA программы
|
12.12.2023 23:36:04
Тема: Re:Применение искусственного интеллекта для обучения ассемблеру, HLCCAD, C-MPA
|
Михаил Долинский
Темы: 2010
Сообщений: 47872
Мой профиль
|
Даниил Акунец:
Лучшие 20 Обсудить задачу в форуме (-): Экзамен\Индивидуальные задания\Контрольные срезы\C-МПА\Сам-с13 - "Задача №13" 101456 Володин Валерий
в новом окне (Установлена: 23.10.2010)
https://dl.gsu.by/task.jsp?nid=2290680&cid=1335
Предложения по улучшению кода
int __bits(2) ICMP(int __bits(32) A, int __bits(32) B) {if (A < B)return 1; else return 0;}
У ICMP должен быть трёхбитный выход
int __bits(3) ICMP(int __bits(32) A, int __bits(32) B)
И возвращаться должен один из трёх вариантов
100
010
001
А после вызова ICMP установка трёх его выходов, например
С = ICMP(A,B);
GT = C==4;
EQ = C==2;
LT = C==1;
вместо
int __out __bits(16) v11;
v11=ISUB(X,Y);
предлагаю писать
int __out __bits(16) v11=ISUB(X,Y);
А ещё надо проверить, может __out не обязательно писать для всех промежуточных переменных.
Также в библиотеку функций желательно добавить
SIGN(x)
ABS(x)
FACT(x) (для значений x от 0 до 15)
|
13.12.2023 14:48:00
Тема: Re:Применение искусственного интеллекта для обучения ассемблеру, HLCCAD, C-MPA
|
Михаил Долинский
Темы: 2010
Сообщений: 47872
Мой профиль
|
Евгений Яковцев:
Я хотел бы поделиться некоторыми советами о том, как максимально эффективно использовать ...
Я зачёл тебе обе темы, HLCCAD и ассемблер. Но мы продвинулись уже много дальше...
Оценка на экзамене будет равна оценке по контрольному срезу, пропуски игнорируются.
|
13.12.2023 19:28:08
Тема: Re:Применение искусственного интеллекта для обучения ассемблеру, HLCCAD, C-MPA
|
Юрий Матафонов
Темы: 1
Сообщений: 16
Мой профиль
|
Командные олимпиады\Микропрограммирование на С-МПА\Контрольный срез (Пример 1)\Базовый\С - "Задача №1" 101444 Илясов Артем
в новом окне (Установлена: 23.10.2010)
https://dl.gsu.by/task.jsp?nid=2285137&cid=1335
int __in __bits(8) c;
int __in __bits(8) d;
int __in __bits(16) a;
int __in __bits(16) b;
int __out __bits(16) RES;
unsigned __bits(16) CBW(unsigned __bits(8) A) {return A;}
unsigned __bits(32) CWD(unsigned __bits(16) A) {return A;}
int __bits(16) ISUB(int __bits(16) A, int __bits(16) B) {return A-B;}
int __bits(32) IMUL(int __bits(16) A, int __bits(16) B) {return A*B;}
int __bits(16) IDIV(int __bits(32) A, int __bits(32) B) {return A/B;}
unsigned __bits(16) x32Tox16(unsigned __bits(32) A) {return A;}
unsigned __bits(3) ICMP(int __bits(32) A, int __bits(32) B) {return (A > B) ? 4 : (A == B) ? 2 : 1;}
unsigned __bits(16) MSb16x2(unsigned __bits(16) Zero, unsigned __bits(16) One, unsigned __bits(1) A) {return A ? One : Zero;}
unsigned __bits(16) SUM(unsigned __bits(16) A, unsigned __bits(16) B) {return A+B;}
void main() {
int __bits(16) One;
int __bits(16) Zero;
unsigned __bits(1) A;
int __bits(16) c16 = CBW(c);
int __bits(16) d16 = CBW(d);
int __bits(16) a32 = CWD(a);
int __bits(16) b32 = CWD(b);
int __bits(16) c32 = CWD(c16);
int __bits(16) d32 = CWD(d16);
One = ISUB(SUM(IDIV(a32,b32),c16),x32Tox16(IMUL(d16,a)));
Zero = ISUB(b,x32Tox16(IMUL(SUM(c16,IDIV(a32,d32)),b)));
A = ICMP(IMUL(a,d16),0);
RES = MSb16x2(Zero, One, A);
}
|
|
|