visualstudio编译C和汇编
我正在学习汇编,很难理解如何编译一个项目。我试图遵循一个教科书上的例子,这个例子有点神秘,有一步一步的编译过程。要么这样,要么我误解了数据流。我正在使用NASM(Netwide汇编器)和免费的GNU gcc编译器(至少这是我的目标)以保护模式编译32位代码。第一个问题是首先,我希望汇编程序和编译器与Microsoft的Visual Studio Express 2013上的兼容 我所拥有的visualstudio编译C和汇编,c,gcc,assembly,visual-studio-2013,C,Gcc,Assembly,Visual Studio 2013,我正在学习汇编,很难理解如何编译一个项目。我试图遵循一个教科书上的例子,这个例子有点神秘,有一步一步的编译过程。要么这样,要么我误解了数据流。我正在使用NASM(Netwide汇编器)和免费的GNU gcc编译器(至少这是我的目标)以保护模式编译32位代码。第一个问题是首先,我希望汇编程序和编译器与Microsoft的Visual Studio Express 2013上的兼容 我所拥有的 C驱动程序例程-调用函数(在名为asm_main的程序集中编写) 将asm_main定义为全局变量的第一个
nasm -f object-format first.asm
这一行应该是汇编代码并输出win32的对象文件(因为我使用的是Visual Studio)。命令行(Start-->Run-->命令)表示这不是有效的输入,这可能是因为我的文件路径不正确,但它表示NASM无效,这使我意识到我没有配置某个设置
在这一步之后,我应该用以下代码编译C代码:
gcc -c driver.c
同样,这应该是通过命令行完成的,但是现在,计算机无法识别的gcc
命令
现在下一步说我可以编译并链接下面的代码,我假设这会使上面的代码变得无用。这条线是:
gcc -o first driver.c first.o asm_io.o
这是有意义的,因为driver.c
是需要编译的c文件,该文件包含对asm_io.o
的调用,但是asm_io.o
是在first.o
中定义的,所以我也不明白为什么需要将其包含在链接中
因此,总结一下我的问题:
- 如何正确地将对象文件链接到相应的C文件
- 具体来说,如何编译混合汇编代码和C代码
- 对于参考文本中指定的操作,如何为命令行提示符选择正确的文件路径
- 什么是NASM
nasm
和gcc
是实际的可执行文件名。不安装它们就不能使用它们,而且它们与VisualStudio没有任何关系。(微软的汇编程序是masm.exe,它有不同的语法。微软的C编译器是cl.exe,它与gcc不直接兼容。)nasm和gcc都是开源项目,你应该可以通过谷歌找到它们。如果安装正确,您遵循的说明应该可以正常工作。(只是出于好奇,你的问题与Visual Basic有什么关系?)你试过了吗?我不明白问题的标题是“Visual Basic”。这似乎与基础无关?@Joachim是的,我做了,但外面有很多噪音,所以我不确定是否值得花时间。对我来说,搜索正是你要找的。