ошибка: недопустимый операнд для инструкции movq 8 (% rbp), -48 (% rbp) - PullRequest
0 голосов
/ 30 января 2020

Я получаю сообщение об ошибке

error: invalid operand for instruction
 movq 8(%rbp), -48(%rbp)

При попытке скомпилировать эту функцию с помощью clang:

_bar:
    movq    %rdi, 0(%rbp)
    addq    $4, %rsp
    movq    %rsi, -8(%rbp)
    addq    $4, %rsp
    movq    %rdx, -16(%rbp)
    addq    $4, %rsp
    movq    %rcx, -24(%rbp)
    addq    $4, %rsp
    movq    %r8 , -32(%rbp)
    addq    $4, %rsp
    movq    %r9 , -40(%rbp)
    addq    $4, %rsp
    movq    8(%rbp), -48(%rbp)
    addq    $4, %rsp
    movq    16(%rbp), -56(%rbp)
    addq    $4, %rsp
    .text
    .globl  _foo

Этот код, напротив, успешно компилируется:

_bar:
    movq    %rdi, 0(%rbp)
    addq    $4, %rsp
    movq    %rsi, -8(%rbp)
    addq    $4, %rsp
    movq    %rdx, -16(%rbp)
    addq    $4, %rsp
    movq    %rcx, -24(%rbp)
    addq    $4, %rsp
    movq    %r8 , -32(%rbp)
    addq    $4, %rsp
    movq    %r9 , -40(%rbp)
    addq    $4, %rsp
    movq    8(%rbp), -48(%rbp)
    addq    $4, %rsp
    movq    16(%rbp), -56(%rbp)
    addq    $4, %rsp
    .text
    .globl  _foo

Есть ли что-то особенное в индексировании 6 байтов под указателем базы, что делает его запрещенным операндом?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...