У меня есть этот Java код:
long[] va = new long[] {1, 0, 0, 1, 0};
long[] vb = new long[] {1, 1, 0, 1, 1};
long hamming(long[] va, long[] vb, long length) {
long hd = 0;
int i;
for (i = 0; i < length; i++) {
if (va[i] != vb[i]) {
hd++;
}
}
return hd;
}
, и я пытаюсь преобразовать его в Assembly x86_64:
va: .quad 1, 0, 0, 1, 0
vb: .quad 1, 1, 0, 1, 1
length: .quad 5
ea rbx, va /*va to rbx */
lea rcx, vb /*vb to rcx */
xor rax, rax
mov r8, [rbx]
mov r9, [rcx]
mov r10, length /* i = 5 */
cycle:
cmp r8, r9 /
jne next
inc rax /* if r8 is not equal to r9 */
next:
inc rbx /* moving the pointer in va */
inc rcx /* moving the pointer in vb*/
dec r10 /*i-- */
jne cycle /* if i is not equal jump back to cycle */
call print_rax
call print_all
Проблема в том, что я могу ' t запустить ассемблерный код. Кто-нибудь может сказать мне, что случилось? Я совершенно новичок в сборке и не могу понять, в чем проблема.