0

ブラケットが正しく一致していると確信していますが、このプログラムの最後に付けたブラケットの数に関係なく、「入力の最後でエラーを解析します」というエラーが表示されます。このエラーに対するすべての Google の結果は、修正が括弧内にあると言っているので、他に何ができるのか途方に暮れています。誰かが私のばかげた小さな間違いを指摘してくれませんか? :)

#include <stdio.h>
#include "/user/cse320/Projects/project06.support.h"
#include "/user/cse320/Projects/project06.hardware.h"

void execute()
{
  unsigned long int IRdecode;
  IRdecode = IR;
  IRdecode >> 30;

  if ( IRdecode == 0 )
  {

    unsigned int _reg = IR;
    unsigned int _imm = IR;

    _reg << 2;
    _reg >> 27;

    _imm << 9;

    write_reg_file( _reg, _imm );
  }

  if ( IRdecode == 00000002 )
  {

    unsigned int _op3 = IR;
    unsigned int _rd = IR;
    unsigned int _rs1 = IR;
    _op3 << 7;
    _op3 >> 26;

    _rd << 2;  
    _rd >> 30;

    _rs1 << 13;
    _rs1 >> 27;

    if ( _op3 == 00000001 ){
      //AND }
    if ( _op3 == 00000002 ){
      //OR } 
    if ( _op3 == 00000003 ){
      //XOR } 
    if ( _op3 == 00000005 ){
      //ANDN }
    if ( _op3 == 00000006 ){
      //ORN } 
    if ( _op3 == 00000007 ){
      //XNOR }
  } 
} 
4

4 に答える 4

2

//AND }同じ行のすべてのものにコメントするコメントに使用 しているため、結果}はコメントされます。

コード:

if ( _op3 == 00000001 ){
  //AND }                //here } will be commented.

このように使用する必要があります

 if ( _op3 == 00000001 ){
  //AND 
 }                          //now OK

また

 if ( _op3 == 00000001 ){
  /*AND*/  }               //OK, as well
于 2011-03-25T03:37:47.280 に答える
1

何かおかしなことが起こっていない限り、あなたのコードには別の問題もあると思います(コメントの問題以外に):

_op3 << 7;
_op3 >> 26;

_rd << 2;  
_rd >> 30;

_rs1 << 13;
_rs1 >> 27;

結果が破棄されるため、これらのビットシフト操作はまったく役に立ちません。演算子は、2 つのオペランドを取り、結果を生成するという点で演算子<<と同じです。+次の場合、何を期待しますか?

i + 4;
2 + 4;
1 + 9;

あなたが望むのは複合演算子だと思います:

_op3 <<= 7;

これは次と同等です。

_op3 = op3 << 7;
于 2011-03-25T03:52:51.683 に答える
0

ステートメントの右中括弧ifが誤ってコメントアウトされているようです。

if ( _op3 == 00000001 ){
  //AND }
于 2011-03-25T03:36:22.760 に答える
0

これはあなたの唯一の問題ではないかもしれません(プログラムの最後にたくさんの中括弧を追加しても役に立たないと言っているので)が、このようなステートメントでは...

if ( _op3 == 00000001 ){
  //AND }

//コメントは行末まで続くため、右中括弧をコメントアウトしました/*AND*/などを代わりに使ってみてください。

それでも問題が解決しない場合は、 で取得できる前処理済みgcc -Eのソース コードを投稿してください。警告: これにより非常に大きなファイルが生成されるため、問題の原因となる管理可能な最小のものに切り詰める必要があります。

于 2011-03-25T03:38:06.690 に答える