Как заставить LLVM AArch64 использовать указатель кадра для ссылки на локальные переменные? - PullRequest
1 голос
/ 18 февраля 2020

Мне действительно интересно, есть ли какой-либо способ (т.е. опция компиляции или предыдущий другой код реализации), чтобы заставить бэкэнд LLVM AArch64 использовать указатель кадра вместо указателя стека, когда он ссылается (или находит) на локальные переменные в стеке frame.

Когда я генерирую ассемблерный код с помощью бэкэнда LLVM AArch64, кажется, что он использует указатель стека для поиска локальных переменных в кадре стека.

Например,

  ....
  str wzr, [sp, #12]    // e.g., local variable a
  str w8, [sp, #8]      // e.g., local variable b
  str w9, [sp, #4]      // e.g., local variable c
  str w10, [sp]
  ...

(он вычисляет смещения из указателя стека и обращается к локальной переменной с помощью указателя стека и смещений.)

Странно то, что все другие инструменты компилятора используют указатель кадра, а не указатель стека , Я опробовал "g cc", "clang", "LLVM x86 backend", и все они ссылаются на локальные переменные, используя указатель кадра и его смещения.

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

Буду очень признателен за любой комментарий или ответ! :)

...