作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试注释掉代码并检查它在哪里给我带来了段错误,但找不到它。我什至无法安装 gcc 调试器来检查。请帮忙!
#include<stdlib.h>
#include<string.h>
#include<stdio.h>
FILE *file;
char *registers[] = {"r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7"};
char *regInBinary[] = {"000", "001", "010", "011", "100", "101", "110", "111"};
char delimiters[4] = " ,\n";
char binaryInstruction[17];
void convertToBinary(char *line);
void binaryToHex();
// Converting each line of source file into 16 bit binary
void convertToBinary(char *line){
int count = 0;
char *token = strtok(line, delimiters);
while(token != NULL){
// Opcodes
if(strcmp(token, "add") == 0)
strcpy(binaryInstruction, "0001");
if(strcmp(token, "and") == 0)
strcpy(binaryInstruction, "0101");
// if(strcmp(token, "halt") == 0)
// main();
int i;
for(i = 0; i < 8; i++){ // appends registers in binary
if(strcmp(token, registers[i]) == 0){
strcat(binaryInstruction, regInBinary[i]);
count++;
if(count == 2){
strcat(binaryInstruction, "000");
}
}
}
token = strtok(NULL, delimiters);
}
}
// Converting 16 bit binary into hex
void binaryToHex(){
char hex[5];
int i, j;
for(i = 0; i < 16; i = i + 0){
for(j = 0; j < 4; j++){
hex[j] = binaryInstruction[i];
i++;
}
printf("%x", (int)strtol(hex, NULL, 2));
}
printf("\n");
}
// Starting program Part1
int main(int argc, char *argv[]) {
char line[40];
if(argc != 2)
printf("Usage: %s source_file\n", argv[0]);
else
file = fopen(argv[1], "t1.asm"); // open source file
while(fgets(line, sizeof(line), file)){
convertToBinary(line);
binaryToHex();
}
//printf("f025")
fclose(file);
return 0;
}
所以这段代码可以在我的 Mac 终端上使用 gcc 完美编译,但当我输入 t1.asm 文件时会抛出段错误。
这是一个 C 程序,用于将 LC3 的 AND、ADD 和 HALT 汇编语言指令翻译为机器代码。
谢谢!
最佳答案
file = fopen(arv[1], "t1.asm");
应该是
file = fopen(argv[1], "r");
关于C 代码段错误(核心转储),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46881296/
我正在为我的应用程序使用 Tank-Auth。我唯一的问题是激活和重置帐户密码。 用于登录、注册、注销;我对这些代码没有问题; $route['login'] = "/auth/login"; $ro
我是一名优秀的程序员,十分优秀!