visualstudio编译C和汇编

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(Netwide汇编器)和免费的GNU gcc编译器(至少这是我的目标)以保护模式编译32位代码。第一个问题是首先,我希望汇编程序和编译器与Microsoft的Visual Studio Express 2013上的兼容

我所拥有的

  • C驱动程序例程-调用函数(在名为asm_main的程序集中编写)
  • 将asm_main定义为全局变量的第一个.asm代码
  • 现在,当我创建一个项目时,我尝试创建一个空项目(在“附加选项”下),然后在“源文件”下添加C驱动程序文件和.asm文件。当我尝试编译此文件时,会出现链接错误,这是有意义的,因为在不同的教程中,它更改了一些属性,并选择(以及添加)了相同的文件路径,将文件放入2个不同的输入框(在Microsoft宏汇编程序下)和链接器选项。我只是不确定,现在怀疑现状是否适合我(因为我在编译时出错)

    这种混乱主要是因为我使用的是VisualStudio,教程要求我使用命令行。它要求我运行代码:

    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是的,我做了,但外面有很多噪音,所以我不确定是否值得花时间。对我来说,搜索正是你要找的。