2016-07-25 39 views
2

Soweit ich verstanden habe, erlaubt LLVM nicht die Durchsetzung eines bestimmten Prozessorregisters. Bedeutet das eine Sprache, die LLVM unter der Haube verwendet, kann nicht für die Entwicklung eines Betriebssystems, eines Bootloaders oder solcher Dinge verwendet werden, die beispielsweise direkten Zugriff auf Register erfordern?Können LLVM-basierte Sprachen in der Betriebssystementwicklung verwendet werden?

Gibt es andere Gründe, warum LLVM IR oder nicht in OS Entwicklung verwendet werden kann?

+0

Für die Teile, auf die Sie auf spezielle Sonderregister zugreifen müssen, würden Sie trotzdem Assembly verwenden. – fuz

+0

@FUZxxl Das ist genau das, wonach ich frage. Also kann ich mit LLVM nicht diese Low-Level erreichen, um Assembly nicht mehr zu benutzen? – Mahdi

+1

Wenn Sie das fragen, ja, können Sie nicht. Diese Art von Code ist jedoch normalerweise sehr wenig vom Code eines Betriebssystems. Sie können es auch nicht durch andere Mittel loswerden. – fuz

Antwort

3

LLVM ist eine abstrakte Maschine. Daher können Sie nicht direkt auf bestimmte Hardwareregister zugreifen. Sie können jedoch weiterhin die Inline-Assembly verwenden (über die call asm LLVM-Bitcode-Mnemonic) oder die wenigen Funktionen programmieren, die auf feste Hardwareregister in der Assembly zugreifen müssen, und sie aus Ihrem LLVM-Code aufrufen.