[Assembler] Hvad gør instruktionen leal?
Jeg har et lille assemblerprogram (nedenfor), hvor jeg gerne vil vide, hvad der præcis sker i linien med leal instruktionen.---------------------------------------
smladdint:
pushl %ebp
movl (%edi), %ecx ; ecx = *sp
movl %ebx, %edx ; edx = accu
sarl $1, %edx ; Long_val(accu)
sarl $1, %ecx ; Long_val(*sp)
addl %edx, %ecx ; ecx = tmp = ...
leal 1(%ecx,%ecx), %ebx ; Hvad sker der her???
movl %ebx, %edx
sarl $1, %edx ; Long_val(accu) (den oprindelige accu)
addl $4, %edi ; sp++
cmpl %ecx, %edx ; tmp ==
movl %esp, %ebp
setne %dl
movzbl %dl, %eax
leave
ret