私はプログラマーとして、アセンブリ言語の行を機械語に翻訳し、小数を計算する必要があるプロジェクトを持っています。計算を簡単にするために、オペコードを備えた独自のサンプルコンピューターがあります。私の質問は、次の関数が私が目指していることを実行するかどうかです。
メイン関数には、返される値が 3 ビットになるため、char binary[3] というラベルの付いた char の配列があります。また、関数には char opcode[MAXLINELENGTH] があり、ファイルから適切に opcode 行を読み込むので、関数内で *string を使用してそれを指します。これで一致が正しく検出され、メインのバイナリ配列が適切な 3 桁のビット コードで埋められますか?
//function should return true if the proper binary output was successfuly copied with the matching opcode
int opcodeBinary(char *string,char *binary){
if(strncmp(*string,"add"){
*binary="000";
return 1;
}
else if(strncmp(*string,"nand"){
*binary="001";
return 1;
}
else if(strncmp(*string,"lw"){
*binary="010";
return 1;
}
else if(strncmp(*string,"sw"){
*binary="011";
return 1;
}
else if(strncmp(*string,"beq"){
*binary="100";
return 1;
}
else if(strncmp(*string,"jalr"){
*binary="101";
return 1;
}
else if(strncmp(*string,"halt"){
*binary="110";
return 1;
}
else if(strncmp(*string,"noop"){
*binary="111";
return 1;
}
else{
return 0;
}
}