所以我在 C 中有这段代码可以求解数独板,我想将其转换为一个汇编程序,该程序从文件 board.txt 中读取板,输出应该是已求解的板,其格式与打印到 stdout 输出的格式相同.我正在使用 Jgrasp,所以我想知道是否有一种方法可以将其转换,或者我是否必须在代码中逐行将其转换为 ARM?
这是c代码:
int rowOK(int board[9][9], int row) {
int index;
int count[10];
for (index=0; index<10; index++)
count[index] = 0;
for (index=0; index<9; index++)
count[board[row][index]]++;
for (index=1; index<10; index++)
if (count[index] > 1)
return 0;
return 1;
}
int colOK(int board[9][9], int col) {
int row;
int seen=0x0;
for (row=0; row<9; row++){
if ((board[row][col] != 0) &&
(seen&(0x1<<board[row][col] == 1)))
return 0;
else
seen=seen|(0x1<<board[row][col]);
}
return 1;
}
int boxOK(int board[9][9], int row, int col) {
int roff;
int coff;
int seen = 0x0;
for (roff=0; roff<3; roff++)
for (coff=0; coff<3; coff++)
if ((board[row+roff][col+coff] != 0) &&
((seen & (0x1 << board[row+roff][col+coff])) != 0))
return 0;
else
seen = seen | (0x1 << board[row+roff][col+coff]);
return 1;
}
int status(int board[9][9]) {
int index;
int row;
int col;
for (index=0; index<9; index++)
if ((rowOK(board,index) == 0) ||
(colOK(board,index) == 0))
return 0;
for (row=0; row<9; row=row+3)
for (col=0; col<9; col=col+3)
if (boxOK(board,row,col) == 0)
return 0;
return 1;
}
int solve(int board[9][9]) {
int guess;
int row;
int col;
int emptyrow = -1;
int emptycol = -1;
for (row=0; row<9; row++)
for (col=0; col<9; col++)
if (board[row][col] ==0) {
emptyrow = row;
emptycol = col;
}
if (emptyrow < 0)
return 1;
for (guess = 1; guess<10; guess++) {
board[emptyrow][emptycol] = guess;
if (status(board) == 1)
if (solve(board) == 1)
return 1;
}
return 0;
}
最佳答案
有一些免费的编译器(例如 GCC)可以为您获取 ARM 代码并将其转换为汇编语言。如果你使用GCC,我认为你只需要使用-S
选项。
关于c - 将 C 语言翻译成 ARM 汇编语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23116002/