所以我正处于MIPS中规划罗马数字转换器(罗马数字到整数)的开始阶段。我坚持如何转换数字小于下一个数字的数字(即IV
[4
])。我正在考虑做下面的事情,但它仍然无法解决我的问题。
把它放在数据部分的某处:
all_numerals: .asciiz "IVXLCDMivxlcdm"
all_values: .byte 1, 5, 10, 50, 100, 500, 1000, 1, 5, 10, 50, 100, 500, 1000
然后我会读取该字符并将其与all_values
中的索引进行比较,并将其添加到寄存器并重复。
有谁知道这样做的有效方法?按照目前的情况,我将做一个循环,将最后一个字符(I
[1
])与下一个字符(V
[5
])进行比较,如果是它不是从最近的(5 - 1
)中减去该字符,但我认为这将是低效的。任何帮助深表感谢。