Czy istnieje sposób na przeniesienie tekstu z rejestru do innego rejestru lub zestawu rejestrów? Na przykład przejdź "q
do rejestrów "1
przez "5
.
Często chcę tworzyć nieco inne wersje tego samego makra, więc warto skopiować makro „szablonu” do kilku rejestrów, a następnie zmodyfikować każde z nich na miejscu.
Aby dać praktyczny przykład, oto problem, który skłonił mnie do tego pytania.
Muszę przekształcić następujący wiersz z języka opisu sprzętu w wiele powtarzających się bloków,
RAM64(in=in, load=load0, address=address[0..5], out=out1);
do
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);
Mam makro, które wykonuje to, używając funkcji przyrostowej, yypW^At)^A
którą zapisałem w rejestrze "a
.
Czasami potrzebuję, aby wzorzec przyrostu był nieco inny, np
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);
gdzie "b
byłoby makro w rejestrze yypW^At)^A^A
.
Chcę, aby rejestr to zrobił, ale dla każdego przyrostu od 1-5. Rejestr "a
można (w jakiś sposób) skopiować do rejestrów od b do e. Następnie wkleiłem każdy rejestr do bufora, dokonałem wymaganej modyfikacji (dodałem więcej terminów, zmieniłem znak następujący po t
ruchu itp.) I wcisnąłem zmodyfikowane wyrażenie z powrotem do rejestru. Idealnie ten ostatni krok mógłby nawet zostać zawarty w poleceniu (-ach), aby skopiować rejestry
To oszczędza mi powtarzania wszystkich znaków w makrze, które NIE wymagają zmiany. W moim przykładzie może to być trywialne, ale mogę przewidzieć czasy, w których zrobienie tego, o co proszę, może być bardzo pomocne.