Чи є спосіб "передати" текст з регістра в інший регістр або набір регістрів? Наприклад, перейти "q
до регістрів "1
наскрізь "5
.
Я часто хочу створити трохи інші версії одного і того ж макросу, тому корисно мати можливість копіювати макрос «шаблон» у кілька регістрів, а потім змінювати кожен з них на місці.
Щоб навести практичний приклад, ось проблема, яка спонукала мене до цього питання.
Мені потрібно перетворити наступний рядок з мови опису апаратних засобів у багато повторюваних блоків,
RAM64(in=in, load=load0, address=address[0..5], out=out1);
до
RAM64(in=in, load=load1, address=address[0..5], out=out2);
RAM64(in=in, load=load2, address=address[0..5], out=out3);
RAM64(in=in, load=load3, address=address[0..5], out=out4);
RAM64(in=in, load=load4, address=address[0..5], out=out5);
У мене є макрос, який виконує це, використовуючи функцію збільшення, yypW^At)^A
яку я зберігав у регістрі "a
.
Іноді мені потрібно, щоб схема приросту була дещо іншою, наприклад, як
RAM512(in=in, load=load1, address=address[0..8], out=out2);
RAM512(in=in, load=load2, address=address[0..8], out=out4);
RAM512(in=in, load=load3, address=address[0..8], out=out6);
RAM512(in=in, load=load4, address=address[0..8], out=out8);
де макрос в регістрі "b
буде yypW^At)^A^A
.
Я хочу, щоб це зробив реєстр, але на кожен приріст від 1-5. Реєстр "a
можна (якось) скопіювати в регістри b через e. Тоді я вставляю кожен реєстр у буфер, вношу необхідну модифікацію (додайте більше термінів, змінюйте символ, який слід за t
рухом тощо) і повертаю модифікований вираз назад у реєстр. В ідеалі цей останній крок навіть міг би бути включений до команди (команд) копіювання регістрів
Це рятує мене від повторення всіх символів макросу, які НЕ потребують змін. Для мого прикладу це може бути тривіально, але я можу передбачити часи, коли це може бути дуже корисно робити те, про що я прошу.