Автор |
Сообщение |
05.12.2023 09:45:49
Тема: Re:Применение искусственного интеллекта для обучения ассемблеру, HLCCAD, C-MPA
|
Андрей Щербак
Темы: 0
Сообщений: 23
Мой профиль
|
Командные олимпиады\Архитектура вычислительных систем\Особенности архитектуры МП Intel 80486/Pentium\Контрольный срез (Пример 5)\Программирование\1М - "Произведение minimaxa" 53826 Наринская Ирина, март 2007, ПМ-45
в новом окне (Установлена: 02.03.2007)
https://dl.gsu.by/task.jsp?nid=2348400&cid=1336
Сгенерированное решение прошло.
int __bits(8) a[7];
int __out __bits(8) pr;
void main() {
int __bits(8) min = a[0];
int __bits(8) max = a[0];
for (int i = 1; i < 7; i++) {
if (a[i] < min) {
min = a[i];
}
if (a[i] > max) {
max = a[i];
}
}
pr = min * max;
}
|
05.12.2023 09:59:00
Тема: Re:Применение искусственного интеллекта для обучения ассемблеру, HLCCAD, C-MPA
|
Андрей Щербак
Темы: 0
Сообщений: 23
Мой профиль
|
Командные олимпиады\Архитектура вычислительных систем\Особенности архитектуры МП Intel 80386 \Контрольный срез (Пример 4)\Программирование\1М - "Среднее арифметическое" 42777 Фамина Ольга, ПОИТ-27, апрель 2006
в новом окне (Установлена: 24.04.2006)
https://dl.gsu.by/task.jsp?nid=2348329&cid=1336
Сгенерировано верное решение.
int __bits(8) mas[5];
int __out __bits(8) srd;
void main() {
int __bits(8) min = mas[0];
int __bits(8) max = mas[0];
for (int i = 1; i < 5; i++) {
if (mas[i] < min) {
min = mas[i];
}
if (mas[i] > max) {
max = mas[i];
}
}
srd = (min + max) / 2;
}
|
05.12.2023 10:10:20
Тема: Re:Применение искусственного интеллекта для обучения ассемблеру, HLCCAD, C-MPA
|
Андрей Щербак
Темы: 0
Сообщений: 23
Мой профиль
|
Владислав Лисичкин:
Провёл работу по обучению ChatGPT 3.5 для возможности работать с одномерным массивом.
Ссылка на ход работы: Тык
Список задач, которые поддерживаются:
1М. Одномерный массив
1М. Произведение minimaxa
11. Спираль
1М. Среднее арифметическое
И др.
Ссылка на документ для бота: Тык
Командные олимпиады\Архитектура вычислительных систем\Особенности архитектуры МП Intel 80286\Контрольный срез (Пример 3)\Программирование\1М - "Производная" 41584 Липский Л., ПО-11, апрель 2006
в новом окне (Установлена: 09.04.2006)
https://dl.gsu.by/task.jsp?nid=2348258&cid=1336
Сгенерированное решение не прошло.
[1]: Ошибка компиляции (mpc): Массив не может иметь модификатор __in (строка 2): int __in __bits(8) f[11];.
Использовалась нейросеть assistant на poe.com
int __in __bits(8) n;
int __in __bits(8) f[11];
int __out __bits(8) r[10];
void main() {
for (int i = 0; i < n; i++) {
r[i] = f[i] * (n - i);
}
}
|
05.12.2023 22:39:29
Тема: Re:Применение искусственного интеллекта для обучения ассемблеру, HLCCAD, C-MPA
|
Михаил Долинский
Темы: 2010
Сообщений: 47872
Мой профиль
|
Андрей Щербак:
Владислав Лисичкин:
Провёл работу по обучению ChatGPT 3.5 для возможности работать с одномерным массивом.
Ссылка на ход работы: Тык
Список задач, которые поддерживаются:
1М. Одномерный массив
1М. Произведение minimaxa
11. Спираль
1М. Среднее арифметическое
И др.
Ссылка на документ для бота: Тык
Командные олимпиады\Архитектура вычислительных систем\Особенности архитектуры МП Intel 80286\Контрольный срез (Пример 3)\Программирование\1М - "Производная" 41584 Липский Л., ПО-11, апрель 2006
в новом окне (Установлена: 09.04.2006)
https://dl.gsu.by/task.jsp?nid=2348258&cid=1336
Сгенерированное решение не прошло.
[1]: Ошибка компиляции (mpc): Массив не может иметь модификатор __in (строка 2): int __in __bits(8) f[11];.
Использовалась нейросеть assistant на poe.com
int __in __bits(8) n;
int __in __bits(8) f[11];
int __out __bits(8) r[10];
void main() {
for (int i = 0; i < n; i++) {
r[i] = f[i] * (n - i);
}
}
В заданиях где нужно написать программу модификаторы __in и __out вообще не нужны.
Они нужны только в тех микропрограммах, по которым генерируются схемы - для генерации контактов и корпуса.
|
06.12.2023 09:39:14
Тема: Re:Применение искусственного интеллекта для обучения ассемблеру, HLCCAD, C-MPA
|
Юрий Матафонов
Темы: 1
Сообщений: 16
Мой профиль
|
Оценка\Индивидуальные задания\По выбору\Проектирование цифровых устройств\Логические элементы\14 - "8AND" 102936 Руденков, Марухленко, Сочнева, ПО-31, февраль 2011
в новом окне (Установлена: 14.02.2011)
http://dl.gsu.by/task.jsp?nid=2300864&cid=1336
Решение задачи на HLCCAD.
Сначала я решал задачу своим методом, а именно я увеличил количество контактов у блока AND2 с двух до восьми. После чего я отправил свое решение Боту https://poe.com/ в виде текстового файла и пояснил условия задачи. После некоторого времени он отправил мне свое решение в виде текстового изображения, которое тоже является верным решением.
Ссылка на документ - https://docs.google.com/document/d/1gbXr_fQqy7yL2qHED1DzRGQSM3dpRvPq9UMUOElbXnY/edit?usp=sharing
|
06.12.2023 11:37:48
Тема: Re:Применение искусственного интеллекта для обучения ассемблеру, HLCCAD, C-MPA
|
Юрий Матафонов
Темы: 1
Сообщений: 16
Мой профиль
|
Оценка\Индивидуальные задания\По выбору\Проектирование цифровых устройств\По логическим функциям\2 - "Логические функции" 40899 Бобрик Евгений, ПМ-45, март 2006
в новом окне (Установлена: 27.03.2006)
http://dl.gsu.by/task.jsp?nid=2300872&cid=1336
Решение задачи на HLCCAD.
Также сначала составил схему решения задачи, а потом отправил это решение Боту https://poe.com/ в текстовом виде. Отправил ему условие задачи и Бот выдал решение-схему в текстовом формате. В первый раз у него произошла ошибка в одном месте, но после того как я указал на его ошибку он исправил её.
Ссылка на документ - https://docs.google.com/document/d/1L02rJz4jOqY9lUt1e84vXWBDgmGmpX_1v6EN4WC4WUs/edit?usp=sharing
|
06.12.2023 12:08:08
Тема: Re:Применение искусственного интеллекта для обучения ассемблеру, HLCCAD, C-MPA
|
Юрий Матафонов
Темы: 1
Сообщений: 16
Мой профиль
|
Оценка\Индивидуальные задания\По выбору\Проектирование цифровых устройств\Комбинационные схемы\2 - "Четное/нечетное" 39309 Науменко Юлия, ПОИТ-27, март 2006
в новом окне (Установлена: 04.03.2006)
http://dl.gsu.by/task.jsp?nid=2300966&cid=1336
Решение задачи на HLCCAD.
Составил схему решения задачи и отправил её Боту https://poe.com/, но к сожалению он не смог составить свою схему решения этой задачи. Также он смог определить, что мое решение является верным, и он смог составить пошаговый план решения этой задачи.
Ссылка на документ - https://docs.google.com/document/d/1cG2HFlitwgq89bhVfUNcKvKgiFQ_rEpMEDnSedic7iA/edit?usp=sharing
|
06.12.2023 13:58:46
Тема: Re:Применение искусственного интеллекта для обучения ассемблеру, HLCCAD, C-MPA
|
Евгений Яковцев
Темы: 0
Сообщений: 24
Мой профиль
|
Михаил Долинский:
Евгений Яковцев:
Я хотел бы поделиться некоторыми советами о том, как максимально эффективно использовать взаимодействие с чат-ботом в учебных целях:
Будьте конкретны в своих вопросах: чем конкретнее ваш вопрос, тем более целенаправленным будет ответ чат-бота. Если вы спрашиваете о конкретной возможности или функции языка программирования, постарайтесь предоставить как можно больше подробностей о том, чего вы пытаетесь достичь, или о проблемах, с которыми вы сталкиваетесь.
Приведите примеры кода. Если вы работаете над фрагментом кода и у вас возникли проблемы с ним, поделитесь кодом с чат-ботом.
Поймите ограничения чат-бота: хотя чат-бот и является мощным инструментом, он не идеален.
Чат часто использует функционал которого не существует в языке, не пытайтесь сказать, что это неправильно, попытайтесь заменить его конструкцию на свою и попросить использовать её вместо той функции которой нет.
Например данная ошибка с расширением переменных и перемещением памяти:
Ошибка byte ptr Y нет в данной модификации языка
mov al, byte ptr Y
Мне пришлось заменить данную конструкцию на следующую:
mov al, Y
cbw
add ax, A9 ; Y+A9 is stored in ax
mov bx, X
в Дополнении чат не знал о функциях расширениях кроме cbw пришлось объяснить ему, что существую другие функции.
Помните, что цель чат-бота — помочь и облегчить ваш процесс обучения.
Он не решил данную задачу, но он предоставил базу задачи и объяснил как она работает. После чего я её доработал.
Так же он может посоветовать как лучше упростить ту или иную конструкцию:
Ссылка на источник чата:
https://disk.yandex.ru/d/6i1HB6ZDMaa_nw
Пока незачёт
1. Надо указать какую задачу решал (привести ссылку на задачу)
2. Надо переложить файл доки так, чтобы он открывался по одному клику
!!! Исправил мой посты
|
06.12.2023 14:47:13
Тема: Re:Применение искусственного интеллекта для обучения ассемблеру, HLCCAD, C-MPA
|
Михаил Долинский
Темы: 2010
Сообщений: 47872
Мой профиль
|
Выложи новый пост.
Чтобы не надо было искать в форуме твой старый пост.
|
08.12.2023 21:44:35
Тема: Re:Применение искусственного интеллекта для обучения ассемблеру, HLCCAD, C-MPA
|
Михаил Долинский
Темы: 2010
Сообщений: 47872
Мой профиль
|
Получается есть два рабочих варианта
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 можно глядя на текст такой программы.
Нарисованную схему тоже потом можно отправлять на тестирование.
Совсем круто, чтобы ИИ писал такую программу прямо с условия задачи.
|
08.12.2023 21:50:24
Тема: Re:Применение искусственного интеллекта для обучения ассемблеру, HLCCAD, C-MPA
|
Михаил Долинский
Темы: 2010
Сообщений: 47872
Мой профиль
|
Виктория Богомазова:
Была сделана работа с попыткой нейросети дать базовое понимание работы HICCAD, чтобы сделать хотя бы одну ветку с арифметическими выражениями с учетом размерности данных. Вся информация: Текст с объяснением для нейросети, ветка, которая была дана для решения, проблемы, правила решения этих проблем и пример есть в этом файле.
https://docs.google.com/document/d/1B_XfyxLgP2IkqldmTCQydavcR_Xnwe25/edit?usp=sharing&ouid=112378336648240327604&rtpof=true&sd=true
Нейросеть: https://you.com/search?q=who%20are%20you&tbm=youchat
Теперь когда определена библиотека функций в С-МПА под HLCCAD (см.сообщение выше).
Надо просто написать решение например Варианта 1 задания на арифметическое выражение в HLCCAD
используя только эти функции и ничего больше.
Фактически это именно та работа, которую ты проводила, только с возможностью автоматической проверки и программы, и схемы.
|
10.12.2023 22:02:42
Тема: Re:Применение искусственного интеллекта для обучения ассемблеру, HLCCAD, C-MPA
|
Евгений Яковцев
Темы: 0
Сообщений: 24
Мой профиль
|
Я хотел бы поделиться некоторыми советами о том, как максимально эффективно использовать взаимодействие с чат-ботом в учебных целях:
Будьте конкретны в своих вопросах: чем конкретнее ваш вопрос, тем более целенаправленным будет ответ чат-бота. Если вы спрашиваете о конкретной возможности или функции языка программирования, постарайтесь предоставить как можно больше подробностей о том, чего вы пытаетесь достичь, или о проблемах, с которыми вы сталкиваетесь.
Приведите примеры кода. Если вы работаете над фрагментом кода и у вас возникли проблемы с ним, поделитесь кодом с чат-ботом.
Поймите ограничения чат-бота: хотя чат-бот и является мощным инструментом, он не идеален.
Чат часто использует функционал которого не существует в языке, не пытайтесь сказать, что это неправильно, попытайтесь заменить его конструкцию на свою и попросить использовать её вместо той функции которой нет.
Например данная ошибка с расширением переменных и перемещением памяти:
Ошибка byte ptr Y нет в данной модификации языка
mov al, byte ptr Y
Мне пришлось заменить данную конструкцию на следующую:
mov al, Y
cbw
add ax, A9 ; Y+A9 is stored in ax
mov bx, X
в Дополнении чат не знал о функциях расширениях кроме cbw пришлось объяснить ему, что существую другие функции.
Помните, что цель чат-бота — помочь и облегчить ваш процесс обучения.
Он не решил данную задачу, но он предоставил базу задачи и объяснил как она работает. После чего я её доработал.
Так же он может посоветовать как лучше упростить ту или иную конструкцию:
Ссылка на источник чата:
https://docs.google.com/document/d/1goZajfWUkfdm72v-S252SwXyUTdlaZ6KjhNOUAy2_3M/edit?usp=sharing
Ссылка на условие задачи:
https://dl.gsu.by/task.jsp?nid=2285821&cid=1335
|
10.12.2023 22:05:40
Тема: Re:Применение искусственного интеллекта для обучения ассемблеру, HLCCAD, C-MPA
|
Евгений Яковцев
Темы: 0
Сообщений: 24
Мой профиль
|
Диалог с AI phind для помощи в решении задачи в HLCCAD: https://docs.google.com/document/d/1L0gnqnhwpIn0BpnAU8HLOmcMr2ghJ663zabh3d6dF5Q/edit?usp=sharing
Я не помнил, как решаются задачи по таблицам истинности с помощью HLCCAD, поэтому я решил попросить помощи у AI.
Главный итог: считаю, что максимум, который можно получить от чата это предоставление смысла решения задачи, которое можно применить в HLCCAD, если вы знаете о всех его особенностях, включая компоненты.
В файле который предоставлен по ссылке, есть фотография решения.
Также можно посоветоваться у чата на счет логического решения задачи.Например, вы можете просто не знать некоторых конструкций и методик работы с битовыми последовательностями.
На основе его идеи можно придумать мультиплексор, с помощью него можно решать ограниченное множество задач, такие задачи можно решить к примеру в C через IF. (Тоесть у нас есть ограниченное множество возможных решений)
Ссылка на условие задачи:
https://dl.gsu.by/task.jsp?nid=2293082&cid=1335
https://dl.gsu.by/task.jsp?nid=2300882&cid=1336
|
12.12.2023 08:37:24
Тема: 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);
}
Там где знак '?' я проверял вручную / не успел проверить.
|
12.12.2023 09:57:08
Тема: Re:Применение искусственного интеллекта для обучения ассемблеру, HLCCAD, C-MPA
|
Александр Дудинский
Темы: 0
Сообщений: 17
Мой профиль
|
Командные олимпиады\Архитектура вычислительных систем\Команды ММХ\Контрольный срез (Пример 6)\Проектирование\ТИ - "Делится ли на 2.3.4.5" 28920 Хруцкий Дмитрий, апрель 2005
в новом окне (Установлена: 18.04.2005)
https://dl.gsu.by/task.jsp?nid=2348465&cid=1336
unsigned __in __bits(6) IN=6;
unsigned __out __bits(1) TWO;
unsigned __out __bits(1) THREE;
unsigned __out __bits(1) FOUR;
unsigned __out __bits(1) FIVE;
unsigned __bits(32) DIV(unsigned __bits(32) A, unsigned __bits(32) B){
unsigned __bits(32) otvet;
otvet=A%B;
otvet=otvet << 16;
otvet=otvet | A/B;
return otvet;
}
void main(){
unsigned __bits(32) chislo;
unsigned __bits(32) x2=2;
unsigned __bits(32) x3=3;
unsigned __bits(32) x4=4;
unsigned __bits(32) x5=5;
chislo=IN;
TWO = !(DIV(chislo, x2) >> 16);
THREE = !(DIV(chislo, x3) >> 16);
FOUR = !(DIV(chislo, x4) >> 16);
FIVE = !(DIV(chislo, x5) >> 16);
}
Программа с реализованным блоком DIV. Для IDIV нужно все переменные unsigned поменять на int.
|
|
|