我试图将程序集中开发的一个函数与.s扩展名链接到C代码主程序main.c
我需要调试汇编例程来查看我的堆栈和寄存器。 我该怎么办?
int main() {
char str[] = "remembering toUpperSelective exercise..";
const char* findChars = "re";
int result = toUpperSelective(str, findChars);
printf("Result Expected is %d and got %d \n", 14, result);
printf("Printing result: %s \n", str);
getchar();
return 0;
}
我怎么说编译器在X位置搜索并停止抛出此错误? (链接)
答案 0 :(得分:0)
您当然可以在C代码中使用汇编语言命令(单个或在块中)。查看用于运行汇编语言指令的ASM C函数。
我不确定断点是否可以在内联汇编语言中使用。你可以做的是定义一个常规函数。在该函数内部,使用ASM Assembly块来编写程序集。如果代码很复杂并且您确实想要调试它,那么测试将单独使用ASM语言。可能你需要一个适用于你正在使用的处理器的模拟器。你能指出一下ASM到底会做些什么吗?
我知道这不是正确的答案,但至少会让你走上正轨。
答案 1 :(得分:0)
Visual Studio没有使用汇编程序。这意味着您要么使用C编译器的内联汇编程序功能,要么安装单独的汇编程序。
如果使用单独的汇编程序,则必须将源添加到项目中,并为其调用具有正确标志的汇编程序的自定义构建规则。然后,Visual Studio将能够处理实际链接。至于调试,Visual Studio调试器能够显示来自目标代码的汇编代码,但是您选择的汇编器必须以Visual Studio可以识别的格式输出调试信息,以便能够正确地查看所有标签等。 / p>
答案 2 :(得分:0)
好的。 我在visual studio上尝试这样做,但在尝试使用insight调试器之前,在Windows平台上没有任何成功。
在此之前我在StackOverflow中开始了另一个问题,但我已经实现了我想要的。 该主题是here。
我将程序集与C代码链接并在Insight C + My Assembly例程上进行调试。 谢谢!