Есть ли способ «передать» текст из регистра в другой регистр или набор регистров? Например, перейти "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
движением и т. Д.) И возвращал измененное выражение обратно в регистр. В идеале этот последний шаг может быть даже включен в команду (ы) для копирования регистров
Это избавляет меня от повторения всех символов в макросе, которые НЕ требуют изменения. Для моего примера это может быть тривиально, но я могу предвидеть времена, когда было бы очень полезно сделать то, что я прошу.