我试图理解内存是如何工作的,以及每条指令如何分配内存。我也试图理解偏移和基指针的概念。我正在为英特尔处理器和MIPS做这个。我能够访问Visual Studio中的内存窗口,但是当我在UNIX上使用gcc和gdb时,我的代码上出现此错误 ![编译代码后] [1]
错误:使用未声明的标识符“_asm” 的 _asm
我在VISUAL STUDIO中没有出现此错误 这是我正在尝试运行的 (非常简单的代码)
void main()
{
int quizint = 0x01000080;
int n = 0xfffffff;
int MIPSzint = 0x80000001;
register int m = 3;
register int p = 256;
static int q = 0x7fffffff;
static int r = 0x10000000;
static int R = 0x8000000;
_asm
{
start_loop:
mov ebx, MIPSzint
add ebx, -2
mov ecx, quizint
mov eax, n
sub eax, q
add eax, R
mov edx, 1
add edx, q
add edx, 1
add edx, n
add R, -1
}
}
====>>> _asm 给了我错误。 问题是,我是否需要添加一些内容才能使其在gcc中运行?
答案 0 :(得分:4)
GCC称之为asm
而不是_asm
,语法略有不同。请参阅https://gcc.gnu.org/onlinedocs/gcc/Extended-Asm.html和http://www.ibiblio.org/gferg/ldp/GCC-Inline-Assembly-HOWTO.html
答案 1 :(得分:1)
如果您正在编译禁用GNU扩展,请使用__asm__
。使用GNU扩展程序,您也可以使用asm
,_asm
不支持gcc
。