2015-05-05 3 views
0

Я рассмотрел все предложенные темы о том, как это решить, и я не могу найти тот, который соответствует моей ошибке.слишком много ссылок на память для 'mov'

Когда я скомпилирую, я получаю «слишком много ссылок на память для« mov », даже если я их вынимаю ...?

__asm__(
    "mov 0x8(%ebp), %edx;" 
    "mov 0x8(%edx), %edx;" 
    "cmp  $0x0,  %edx;" 
    "je  notFound;" 

    "sub  $0x10,  %esp;" 
    "movl 0xc(%ebp), (%esp);" 
    "movl $0x24,  0x8(%esp);" 


    "mainloop: " 
    "movl %edx,  0x4(%esp);" 
    "call _memcmp;" 
    "cmp  $0xffffffff, %eax;" 
    "je  leftBranch;" 

    "cmp  $0x1,  %eax;" 
    "je  rightBranch;" 
    "jne  found;" 


    "leftBranch: " 
    "mov 0xc(%edx), %edx;" 
    "cmp  $0x0,  %edx;" 
    "je  notFound;" 
    "jne  mainloop;" 

    "rightBranch: " 
    "mov 0x10(%edx), %edx;" 
    "cmp  $0x0,  %edx;" 
    "je  notFound;" 
    "jne  mainloop;" 

    "notFound: " 
    "mov $0x0,  %eax;" 
    "add  $0x10,  %esp;" 
    "leave;" 
    "ret;" 

    "found: " 
    "add  $0x10,  %esp;" 
    "leave;" 
    "ret;" 
); 

ответ

6

Проблема, скорее всего, эта линия:

"movl 0xc(%ebp), (%esp);" 

Вы не можете ссылаться на две ячейки памяти в одной mov инструкции.