草庐IT

GCC-style

全部标签

c - 让 gcc 通过寄存器传递参数

在我的32位x86Ubuntu11.10上,gcc4.6.3通过堆栈传递参数。是否有任何gcc优化强制gcc通过寄存器传递参数?gcc是怎么做到的?请给我一些详细信息。 最佳答案 相关属性是__attribute__((fastcall))。使用此属性声明的函数在ECX中使用第一个合格参数调用,在EDX中使用第二个合格参数调用。(我假设是x86。你刚才说的是32位,但这涵盖了许多架构,例如ARM)。 关于c-让gcc通过寄存器传递参数,我们在StackOverflow上找到一个类似的问题

c - 让 gcc 通过寄存器传递参数

在我的32位x86Ubuntu11.10上,gcc4.6.3通过堆栈传递参数。是否有任何gcc优化强制gcc通过寄存器传递参数?gcc是怎么做到的?请给我一些详细信息。 最佳答案 相关属性是__attribute__((fastcall))。使用此属性声明的函数在ECX中使用第一个合格参数调用,在EDX中使用第二个合格参数调用。(我假设是x86。你刚才说的是32位,但这涵盖了许多架构,例如ARM)。 关于c-让gcc通过寄存器传递参数,我们在StackOverflow上找到一个类似的问题

c++ - 关于 : assembly generated from my C++ by gcc 的问题

编译这段代码:intmain(){return0;}使用:gcc-Sfilename.cpp...生成这个程序集:.file"heloworld.cpp".text.globlmain.typemain,@functionmain:.LFB0:.cfi_startproc.cfi_personality0x0,__gxx_personality_v0pushl%ebp.cfi_def_cfa_offset8movl%esp,%ebp.cfi_offset5,-8.cfi_def_cfa_register5movl$0,%eaxpopl%ebpret.cfi_endproc.LFE0:.

c++ - 关于 : assembly generated from my C++ by gcc 的问题

编译这段代码:intmain(){return0;}使用:gcc-Sfilename.cpp...生成这个程序集:.file"heloworld.cpp".text.globlmain.typemain,@functionmain:.LFB0:.cfi_startproc.cfi_personality0x0,__gxx_personality_v0pushl%ebp.cfi_def_cfa_offset8movl%esp,%ebp.cfi_offset5,-8.cfi_def_cfa_register5movl$0,%eaxpopl%ebpret.cfi_endproc.LFE0:.

c - 如何避免普通 "char"到 : "unsigned char" OR "signed char" conversion? 的 gcc 警告

我的默认字符类型是在gcc选项(-funsigned-chargcc)中设置的“unsignedchar”。所以可以说,当我在代码中需要“unsignedchar”时,我可以使用“char”。但是我收到关于(char*)和(unsignedchar*orsignedchar*)之间转换的警告:“错误:‘test2’传递参数1的指针目标的符号不同”。当我将unsignedchar*变量传递给char*时(知道我的系统具有由编译器选项设置的默认unsignedchar),如何避免警告?staticvoidtest2(char*a)//charisunsignedbydeafultasset

c - 如何避免普通 "char"到 : "unsigned char" OR "signed char" conversion? 的 gcc 警告

我的默认字符类型是在gcc选项(-funsigned-chargcc)中设置的“unsignedchar”。所以可以说,当我在代码中需要“unsignedchar”时,我可以使用“char”。但是我收到关于(char*)和(unsignedchar*orsignedchar*)之间转换的警告:“错误:‘test2’传递参数1的指针目标的符号不同”。当我将unsignedchar*变量传递给char*时(知道我的系统具有由编译器选项设置的默认unsignedchar),如何避免警告?staticvoidtest2(char*a)//charisunsignedbydeafultasset

将 C 变量的内容复制到寄存器 (GCC)

由于我是GCC的新手,我在内联汇编代码中遇到了问题。问题是我不知道如何将C变量(UINT32类型)的内容复制到寄存器eax中。我试过下面的代码:__asm__(//IftheLSBofsrcisa0,use~src.Otherwise,usesrc."mov$src1,%eax;""and$1,%eax;""dec%eax;""xor$src2,%eax;"//Findthenumberofzerosbeforethemostsignificantone."mov$0x3F,%ecx;""bsr%eax,%eax;""cmove%ecx,%eax;""xor$0x1F,%eax;");

将 C 变量的内容复制到寄存器 (GCC)

由于我是GCC的新手,我在内联汇编代码中遇到了问题。问题是我不知道如何将C变量(UINT32类型)的内容复制到寄存器eax中。我试过下面的代码:__asm__(//IftheLSBofsrcisa0,use~src.Otherwise,usesrc."mov$src1,%eax;""and$1,%eax;""dec%eax;""xor$src2,%eax;"//Findthenumberofzerosbeforethemostsignificantone."mov$0x3F,%ecx;""bsr%eax,%eax;""cmove%ecx,%eax;""xor$0x1F,%eax;");

c - gcc 不会编译 SDL C 程序(对 SDL 函数的 undefined reference )

我最近转向了linux,但在使用gcc编译SDLC程序时遇到了问题。我正在使用的命令:gcc`sdl-config--cflags--libs`-omainmain.c即使通过分离sdl-config标志:gcc`sdl-config--cflags`-cmain.cgcc`sdl-config--libs`-omainmain.o我遇到了同样的错误:/tmp/ccHYyjKd.o:Infunction`main':main.c:(.text+0xe):undefinedreferenceto`SDL_SetMainReady'main.c:(.text+0x18):undefined

c - gcc 不会编译 SDL C 程序(对 SDL 函数的 undefined reference )

我最近转向了linux,但在使用gcc编译SDLC程序时遇到了问题。我正在使用的命令:gcc`sdl-config--cflags--libs`-omainmain.c即使通过分离sdl-config标志:gcc`sdl-config--cflags`-cmain.cgcc`sdl-config--libs`-omainmain.o我遇到了同样的错误:/tmp/ccHYyjKd.o:Infunction`main':main.c:(.text+0xe):undefinedreferenceto`SDL_SetMainReady'main.c:(.text+0x18):undefined