Написание цикла для машины sparc

Я пытаюсь написать следующий код для машины sparc.

y=(x-7)(x-11) for the range 0<=x<=10

и я хочу распечатать следующий код вроде этого for input of x=0 output y=77 и так далее до десяти.

Мне удалось сделать петлю. Но моя проблема заключается в том, чтобы распечатать вывод.

       /*
     This program will compute y=(x-7)(x-11)
     for the range 0<=x<=10
    */

     /*
    these are the variables
    */

.section ".data"

mystring:.asciz "for input of x=%d and output y=%d"

  define(a1,7)

 define(a2,11)

define(x_r,l0)
define(x_r,l1)
.section ".text"

main:
save %sp,-96,%sp
clr %x_r

loop:
 sub %x_r,a1,%o0 !(x-a1)

sub %x_r,a2,%o1 !(x-a2)
call .mul
 nop

  mov %o0,%y_r
  add %x_r,1,%x_r

  cmp %x_r,10
 ble loop
  nop

 ret
 restore

Я знаю, что мне нужно напечатать что-то подобное в моем коде, но я не уверен, где.

 set mystring,%o0
 move %x_r,%o1
 move %y_r,%o2
 call printf
 nop

Выход, который я получаю сейчас,

для входа x=0 выход y=77 для входа x=1 выход y=60 для входа x=2 выход y=45 для входа x=3 выход y=32 для входа x=4 выход y=21 для входа x=5 выход y=12 для входа x=6 выход y=5 для входа x=7 выход y=0 для входа x=8 выход y=-3 для входа x=9 выход y= -4 для входа x=10 выход y=-3

я бы хотел вот так

для входа x=0 выход y=77 для входа x=1 выход y=60 ...... ...... для входа x=10 y=-3


person humblecomputeruser    schedule 07.02.2014    source источник


Ответы (1)


Прошло много времени с тех пор, как я в последний раз видел сборку SPARC. В настоящее время процессоры либо x86, либо ARM. Мои знания о сборке SPARC довольно устарели...

  1. Второй псевдоним - опечатка, не так ли? Я думаю, это было предназначено для y_r

    define(x_r,l0)
    define(x_r,l1)
    
  2. С помощью mov %o0,%y_r вы сохраняете результат умножения в %y_r. В то время как следующая строка add %x_r,1,%x_r - это ++x в C. Таким образом, между этими двумя должна быть вызвана printf.

person nodakai    schedule 07.02.2014
comment
да, это имеет смысл, спасибо за ваш ответ, это работает, но есть ли способ заставить вывод отображаться вертикально, а не горизонтально при печати - person humblecomputeruser; 08.02.2014
comment
Можете ли вы отредактировать свой пост с вопросом, чтобы добавить (1) результат, который вы получаете на данный момент, и (2) желаемый результат? - person nodakai; 08.02.2014