Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; 8664
- mov rax,r0 ; Поставяме началния адрес в rax
- mov ecx,-1
- xor edx,edx ; Нулираме edx за брояч на еднаквите байтове
- @@:
- inc ecx
- cmp r1b,cl ; Проверяваме за край на масива
- je @f ; Ако да излизаме от метода
- cmp byte[rax + rcx],r2b ; Проверяваме дали текущия байт е еднакъв с примерният
- jne @b ; Ако не е продължаваме цикъла (се едно continue на С++)
- inc edx ; Ако е увеличаваме брояча за еднакви байтове
- jmp @b
- @@:
- mov r0,rdx ; Поставяме преброените байтове в r0 и връщаме като резултат
- ret
- ;
- ; ARM
- ;
- .global main
- main:
- STMFD SP!, {R1-R4, LR}
- MOV RAX,R0 ; Поставяме началния адрес в rax
- MOV ECX,#-1
- EOR EDX,EDX ; Нулираме edx за брояч на еднаквите байтове
- L1:
- IA ECX
- CMP R1,CL ; Проверяваме за край на масива
- BLEQ L2 ; Ако да излизаме от метода
- L2:
- CMP RAX + RCX,R2 ; Проверяваме дали текущия байт е еднакъв с примерният
- BNE L2 ; Ако не е продължаваме цикъла (се едно continue на С++)
- IA EDX ; Ако е увеличаваме брояча за еднакви байтове
- B L3
- L3:
- MOV R0,RDX ; Поставяме преброените байтове в r0 и връщаме като резултат
- LDMFD SP!, {R1-R4, PC}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement