草庐IT

将 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

编译 -ansi -pedantic -Wall 自动切换 gcc

我们需要这样使用gcc编译C源代码:gcc-ansi-pedantic-Wallprogram.c我想知道如何“自动化”这个,所以当我输入时:gccprogram.c它将自动编译3个开关。这可能吗? 最佳答案 您还可以使用make的隐式规则,这样您就不必为每个程序都编写一个makefile。如果你说makefoo并且当前目录中存在foo.c文件,Make将自动调用编译器。要为此添加标志,请在您的环境中定义变量CFLAGS,例如在bash中添加exportCFLAGS="-Wall-pedantic-ansi"到.bashrc。如果您

编译 -ansi -pedantic -Wall 自动切换 gcc

我们需要这样使用gcc编译C源代码:gcc-ansi-pedantic-Wallprogram.c我想知道如何“自动化”这个,所以当我输入时:gccprogram.c它将自动编译3个开关。这可能吗? 最佳答案 您还可以使用make的隐式规则,这样您就不必为每个程序都编写一个makefile。如果你说makefoo并且当前目录中存在foo.c文件,Make将自动调用编译器。要为此添加标志,请在您的环境中定义变量CFLAGS,例如在bash中添加exportCFLAGS="-Wall-pedantic-ansi"到.bashrc。如果您

c++ - 为什么 `/usr/include` 不在 gcc 默认搜索路径中

众所周知,gcc在编译目标时会搜索一些默认目录,我使用gcc-print-search-dirs命令并得到这些东西:install:/usr/lib/gcc/x86_64-redhat-linux/4.8.5/programs:=/usr/libexec/gcc/x86_64-redhat-linux/4.8.5/:/usr/libexec/gcc/x86_64-redhat-linux/4.8.5/:/usr/libexec/gcc/x86_64-redhat-linux/:/usr/lib/gcc/x86_64-redhat-linux/4.8.5/:/usr/lib/gcc/x8

c++ - 为什么 `/usr/include` 不在 gcc 默认搜索路径中

众所周知,gcc在编译目标时会搜索一些默认目录,我使用gcc-print-search-dirs命令并得到这些东西:install:/usr/lib/gcc/x86_64-redhat-linux/4.8.5/programs:=/usr/libexec/gcc/x86_64-redhat-linux/4.8.5/:/usr/libexec/gcc/x86_64-redhat-linux/4.8.5/:/usr/libexec/gcc/x86_64-redhat-linux/:/usr/lib/gcc/x86_64-redhat-linux/4.8.5/:/usr/lib/gcc/x8

c - 内置 gcc 自旋锁

如何确保在互斥锁期间由多个CPU内核写入的数据在所有内核的所有L1缓存中同步?我说的不是代表锁的变量,我说的是锁期间涉及的内存位置。这是针对Linux,x86_64,我的代码是:#include#include"dlog.h"uint*dlog_line;volatileintdlog_lock;char*dlog_get_new_line(void){uintval;while(!__sync_bool_compare_and_swap(&dlog_lock,0,1)){val=*dlog_line;if(val==DT_DLOG_MAX_LINES)val=0;*dlog_line

c - 内置 gcc 自旋锁

如何确保在互斥锁期间由多个CPU内核写入的数据在所有内核的所有L1缓存中同步?我说的不是代表锁的变量,我说的是锁期间涉及的内存位置。这是针对Linux,x86_64,我的代码是:#include#include"dlog.h"uint*dlog_line;volatileintdlog_lock;char*dlog_get_new_line(void){uintval;while(!__sync_bool_compare_and_swap(&dlog_lock,0,1)){val=*dlog_line;if(val==DT_DLOG_MAX_LINES)val=0;*dlog_line