Kann mir jemand bei diesem Code helfen? In diesem Fall möchte ich den Wert von ptrgrades verwenden und dann mit 4 multiplizieren (Array von ganzen Zahlen), um den entsprechenden Wert in ptrfreq (Array mit absoluten Häufigkeiten) zu erhöhen, um diesen Wert zu aktualisieren. Aber ich denke, dass ich einige Probleme habe, um den korrekten Adresswert zu erhalten, um in% edi Register oder vielleicht% eax Wert zu verwenden.Assembly IA32: Was ist los mit diesem Stück Code?
movl ptrgrades, %esi # set esi pointer to grades
movl grades_length, %ecx # length of vector grades
l_freq:
movl ptrfreq, %edi # reset with inital addrs of pointer
movl (%esi), %eax # tmp = grades[i]
shll $2, %eax # multiply grade by 4
addl %eax, %edi # and add to the ptrfreq addrs
incl (%edi) # freq[i]++
addl $4, (%esi) # ptrgrade++
loop l_freq # loop while ecx != 0
Versuchen Sie 'addl $ 4,% esi' anstelle von' addl $ 4, (% esi) '. Während das letztere "Grade [i] + = 4;", macht das erstere 'Grade + = 4;', oder, wenn 'grade' ein' int * 'ist,' ++ graden; '. – Downvoter