私はarduinoでコーディングしていますが、私のCコードの間にアセンブリコードも使用しています。私は値の罪を計算したい。これまでのところ、私はこのコードを持っている:AVRインラインアセンブリFsinオペランドの制約
void setup() {
// put your setup code here, to run once:
}
void loop() {
// put your main code here, to run repeatedly:
Serial.begin(9600);
float answer;
float angle = 2;
int a = 2;
int b = 3;
asm("ADD %0,%1" : "+r"(a) : "r"(b));
asm("fsin" : "=t" (answer) : "0" (angle));
Serial.print(answer);
}
私はこのために取得するエラーがある:「ASM」で一貫性のないオペランド制約 面白いことに、私は最後の行(シリアルを削除すると、このエラーが出るいけないということです。
また、私はこのコードをavrではなく8086のアセンブラで見つけました。そして8086で "= t"は浮動小数点に特有ですが、avrに似たものは何も見つかりません。
AVRに 'fsin'というようなアセンブラコマンドはありません。これはC関数呼び出しであり、そのように扱われる必要があります( 'CALL')。 – tofro