Как поместить собственный DWARF в C результирующий двоичный файл? - PullRequest
0 голосов
/ 05 августа 2020

У меня два вопроса:

Можно ли добавить собственный DWARF в результирующий двоичный файл программы C? (позже я объясню, почему я хочу это сделать)

Как работает DWARF?

Во-первых, я не понимаю DWARF. Я пытался почитать документацию на dwarfstd.org, но думаю, что для меня это слишком много. Может быть, кто-нибудь может дать мне базовые c инструкции, которые помогут мне копнуть глубже (точка входа для меня немного сложна).

Почему я хочу это сделать? Мне нравится поиграться с написанием собственного компилятора, реализуя свой собственный язык. Моя цель - написать скомпилированный язык, а не интерпретируемый или измененный. Так что у меня есть несколько вариантов в качестве бэкэнда: C, Opcodes, ASM, LLVM и, возможно, есть еще много чего. Поскольку LLVM - это библиотека C ++ (а я понятия не имею о C ++), я немного попробовал ее, используя оболочку C. Так как я тоже новичок в ie на C, мне было нелегко заставить его работать (но я не особо разбирался). Проблема с кодами операций и ASM в том, что кривая обучения выше, чем у LLVM, и я даже больше, чем новичок ie на этом топи c. Итак, я хотел бы использовать C в качестве бэкэнда ... но я думаю о некоторых проблемах: Информация об отладке. Полученный файл C будет иметь другие имена функций, чем мой исходный язык, и даже другие номера строк. Я знаю, что номера строк можно исправить с помощью директивы #line в C, но это не на 100% идеально. Поэтому я ищу действительно хорошее решение для этого, прежде чем начну реализовывать что-то странное. Я наткнулся на DWARF, и у меня возник этот вопрос.

Если кто-нибудь знает хорошо документированную альтернативу LLVM, которая бы соответствовала моим требованиям, добро пожаловать, чтобы сообщить мне:)

Мои требования для целевой платформы минимум: x86, x64 и ARM

...