удалить начальные и конечные пробелы mips? - PullRequest
0 голосов
/ 08 мая 2020

поэтому я выяснил эту программу, которая в основном кодирует шаблон чисел, и числа должны быть вставлены между собой табуляцией, например:

1 1 1

но последний " 1 "также имеет вкладку, и мне нужно ее удалить. вот как выглядит мой код для табуляции: я использую его перед концом моего for l oop, поэтому он может увеличиваться во сколько раз. я действительно не знаю, с чего начать для создания условного выражения, которое не печатает последнее число с табуляцией

li $v0, 11      #this is for tabbing the numbers 
        li $a0, 9   
        syscall

1 Ответ

0 голосов
/ 08 мая 2020

Вы не предоставили достаточно кода, чтобы дать полный ответ, но есть несколько способов пропустить печать последней вкладки:

Если вы знаете, что обрабатываете последний элемент, вы можете перепрыгнуть через вкладку печати код, например, предположим, что вы находитесь в while-l oop, где вы l oop, а $t0 отличается от $t1, тогда вы можете написать:

while_loop:
   # .... do something
   beq $t0, $t1, skip
   # your code to print tab
   li $v0, 11      #this is for tabbing the numbers 
   li $a0, 9   
   syscall
skip:
   # ... something else
   bne $t0, $t1 while_loop  % this is the condition to keep in the loop

, если печать вкладки - это последнее, что вы делали в l oop, тогда вы можете немного упростить:

while_loop:
   # .... do something
   beq $t0, $t1, while_loop
   # your code to print tab
   li $v0, 11      #this is for tabbing the numbers 
   li $a0, 9   
   syscall
   b  while_loop  

Другой подход - распечатать вкладку в начале l oop, за исключением первой итерации. Полезно, если вы перебираете некоторые значения в регистре и знаете, что какое-то начальное значение не будет повторяться. В этом примере я просто буду использовать предположительно запасной регистр:

li $t7, 0  # $t7 will only have 0 on the first iteration of the loop
while_loop:
  beq $t7, $zero, skip
  # your code to print tab
  li $v0, 11      #this is for tabbing the numbers 
  li $a0, 9   
  syscall
skip:
  li $t7, 1
% your remaining code here, which at some point goes to the while_loop
...