小编eco*_*eve的帖子

C 中的内联 ASM,使用 MinGW/GCC 编译,使用“-masm=intel”:“未定义的引用”

我一直在寻找很多使用内联 ASM 的示例,并且看到了一些不同的方法。

我在编译时使用了 -masm=intel 选项。据我了解,使用此选项时,您可以像使用 intel 语法一样编写内联 ASM。

我还看到人们使用“.intel_syntax”的方法

当我编译时,我收到以下消息。

    i586-mingw32msvc-gcc -masm=intel -o KDOS.exe KDOS.c
    /tmp/ccVIXhRF.o:KDOS.c:(.text+0x5f): undefined reference to `address'
    /tmp/ccVIXhRF.o:KDOS.c:(.text+0x6a): undefined reference to `ipAddr'
    /tmp/ccVIXhRF.o:KDOS.c:(.text+0x79): undefined reference to `csAddr'
    /tmp/ccVIXhRF.o:KDOS.c:(.text+0x11d): undefined reference to `address'
    collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

我四处寻找解决方案,但似乎找不到。我见过一些帖子说你不能将 C 变量传递到内联 ASM 中,但我也见过一些东西说有解决方法。但它们并不完全适用于我正在做的事情,所以我不太确定如何利用它们。抱歉,如果这是一个显而易见的答案,但这是我第一次使用内联 ASM,更不用说转换语法了。

这是我的代码。我正在阅读一本书,这是其中的一些示例代码。书中它不是用 gcc 编译的,所以这就是为什么我需要转换为 intel 语法,因为我显然需要它在 Windows 上运行。这是我修改后的代码版本:

// KDOS.c
// Chapter 2

#include<stdio.h>

#define WORD unsigned short

#define IDT_001_ADDR    0        //start address of first IVT vector
#define IDT_255_ADDR    1020     //start address of …
Run Code Online (Sandbox Code Playgroud)

c gcc mingw32

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

c ×1

gcc ×1

mingw32 ×1