【发布时间】:2020-12-12 01:43:21
【问题描述】:
为了避免ab解释,我的问题简而言之:
我想通过llvmC++ api读写Arduino端口D。
写
DDRD = 0xFF;
PORTD = 12;
阅读:
DDRD = 0x00;
int x = PORTD;
阅读更多:
我想知道如何通过llvm 读/写 Arduino 端口。我不是在追求特定的 AVR 微控制器,只需要一般知识。
我的努力是天旋地转,但没有奏效。我不确定那里是否支持我的需求。
我在本地试过,
main.cpp
void foo(){
DDRD = 0xFF;
PORTD = 12;
}
clang++ -c -O0 --target=avr -mmcu=atmega328p -DF_CPU=16000000 -emit-llvm main.cpp
clang:错误:未知参数:'-mmcu=atmega328p'
如何通过 llvm::AllocaInst 实现此功能?或者通过llvm::LoadInst读取这个端口?
我主要是在C++ api 解决方案之后。 IR llvm 对我来说并不理想,但它会帮助我最终找到主要问题的答案。
【问题讨论】:
-
不,因为不太可能有人知道您想要实现的目标。您同时在谈论使用 LLVM构建 东西,以及使用 LLVM API 或 IR。您的陈述“我想知道如何通过 LLVM 读取 Arduino 端口”毫无意义。您想知道如何从您编译的 C++ 程序中执行此操作,或者您自己生成 IR 时,或者什么。这个问题是不可理解的。请清楚地说出你的想法。您的第一个问题是您的 llvm 构建中没有 AVR 目标,或者您没有正确命名它。确保您了解可用的目标。
-
@UnslanderMonica,正如我所说,我在 LLVM api 之后。但如果没有人知道,我至少对 IR 感到满意。
-
您在问题中没有陈述任何自洽的内容。为什么你认为你需要一个 LLVM API?你是什么意思?看起来你把事情搞混了。 LLVM API 不适用于使用 LLVM 编译的应用程序内部。它用于代码生成器、代码分析器、LLVM 传递/后端等。如果您询问如何从使用 LLVM 编译的 C/C++ 代码生成特定于目标的 I/O 端口输出指令,您必须查看文档将用于此的内在函数的目标。
标签: c++ arduino clang llvm llvm-c++-api