【问题标题】:checking if the value already exists in memory检查该值是否已存在于内存中
【发布时间】:2015-10-06 00:47:47
【问题描述】:

我不确定如何检查内存地址并查看数组中是否存在单词。

如果我有以下代码,其中 $t0 包含数组的基地址

.data
array: .space 800 #For 200 integers

la $t0, table
sw $t1, 0($t0) #Add the value at t1 to the table

现在如何检查我添加的单词是否已经在表格中?

【问题讨论】:

  • 维护数组中元素的计数,然后简单地遍历所有项目并检查是否找到它。哪个部分给您带来了问题?
  • 主要是循环本身,当我考虑它时,我将不得不遍历数组本身,而不是如果它存在分支。但是我将如何遍历数组呢?
  • 哦,等等,我必须将索引增加 4。我想我明白该怎么做了,我会去尝试一下。

标签: assembly mips spim


【解决方案1】:

也许你可以这样做:

.data
array: .space 800       #200 int á 4 bits
value: .word 0          #value

table: #some crazy value....

.text

.globl Main
MAIN:
    li $t0, 0           #Loop-Start_Point
    li $t1, 200     #LOOP-Break-Point
    la $t2, table       #load table
    addi $t4, $t2, 0    #store table address
    lw $t5, value       #load value
    li $t6, 4           #load multiplier


LOOP:   
    mul $t3, $t0, $t6   #calculate offset
    addi $t2, $t2, $t3     #add offset
    beg $t2, $t5, END      #check if value is in table
    addi $t0, $t0, 1       #add 1 to loop count
    blt $t0, $t1, LOOP   #if loop not finish -> LOOP:

STORE:
    sw $t5, ($t4)      #add value

END:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-30
    • 1970-01-01
    • 1970-01-01
    • 2012-05-13
    • 2013-06-14
    • 1970-01-01
    • 2015-09-18
    相关资源
    最近更新 更多