здрасьте люди добрые

извините что тревожу вас несерьезными вопросами, но помогите разобраться...

я пишу функцию на Assembler которая будет использоваться в программе на C++
и вот у меня проблема с пониманием, почему если я использую память выделеную на стеке, илм локальную переменную вместо регистра, то программа неверно считает.
пожалуйста помогите разобраться вот на этом примере

.section .text _Z1fl
_Z1fl:

pushq %rbp

movq %rsp, %rbp
subq $1, %rsp

movq %rdi, -8( %rbp)

cmpq $0, -8(%rbp)
jne dw
mov $1, %rax
jmp ext

movq -8(%rbp), %rcx
subq $1, %rcx
movq %rcx, %rdi
movq $1 , %rax

call _Z1fl
movq -8(%rbp) , %rbx

mulq ,%rbx


ext:
leave
ret


//так работает
но если

movq -8(%rbp), %rcx
subq $1, -8(%rbp)
movq -8(%rbp), %rdi
movq $1 , %rax


call _Z1fl
%rcx , %rbx

mulq ,%rbx




не будет правильно работать.
что то затирается в rcx?








 






URL записи