You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
RLogãããã£ã¦ã¦ç¥ã£ã__builtin_expectã試ãã¦ã¿ãã__builtin_expectã¯ããå¼ãã»ã¨ãã©ã®å ´åã«æ±ºã¾ã£ãå®æ°ã«ãªããã¨è¨ãå ´åã«åå²äºæ¸¬ã®ãã³ããªã©ãä¸ãã¦é«éåãè¨ãããã®gccãã£ã¬ã¯ãã£ãã ãããªã RLogã¯dormant(ä¼ç )ç¶æ ã®ãã°ãã¡ã·ãªãã£ã«æé©åãã¦ãã£ã¦ããããã¯ã·ã§ã³ã³ã¼ãã«ãã°ã³ã¼ããæ®ãã£ã±ãªãã§ããã»ã©ãã°ã¬ããªãã®ã売ããªãã ãã©ããã®ã«ã©ã¯ãªãããã ã§ãRLogèªèº«ã«ã¤ãã¦ã¯ãã¨ã§æ¸ãã ã©ãããï¼ å ·ä½çã«ã¯ __builtin_expect(A,B)ã¨æ¸ããå ´å Aãå®æ° Bã§ããäºãæå¾ ãããã¨ãããã³ãæ å ±ã«ãªãã ä¾ãã°ãæ¯è¼æ¼ç®åãã»ã¨ãã©ã®å ´åæãç«ããªããã¨è¨ãå ´å __builtin_expect(, 0)ãã¨ãªãã #include <stdio.h> #ifdef EXPECT #define E
This document describes the Python plugin Iâve written for GCC. In theory the plugin allows you to write Python scripts that can run inside GCC as it compiles code, exposing GCCâs internal data structures as a collection of Python classes and functions. The bulk of the document describes the Python API it exposes. Hopefully this will be of use for writing domain-specific warnings, static analysers
23 Plugins ¶ GCC plugins are loadable modules that provide extra features to the compiler. Like GCC itself they can be distributed in source and binary forms. GCC plugins provide developers with a rich subset of the GCC API to allow them to extend GCC as they see fit. Whether it is writing an additional optimization pass, transforming code, or analyzing information, plugins can be quite useful. Lo
æè¿Macã®ããã±ã¼ã¸ç®¡çã·ã¹ãã ãè²ã 使ã£ã¦ã¿ã¦ãã¦ï¼ãã®ä¸ç°ã§Homebrewã使ã£ã¦ã¿ãããªã©ãã¾ããï¼ Homebrewã«ã¯gccã®ããã±ã¼ã¸ãè¦å½ãããªãã£ãã®ã§æ¤ç´¢ãã¦ã¿ãã¨ããï¼ homebrew-altã¨ãããªãã¸ããªã«æ¯è¼çæ°ããã®gcc-4.6.0ã®Formulaãããã¾ããï¼ 404 · GitHub ã¾ããããï¼ææ°çã®gccã追ã£ã¦ãã£ã¦ã人ã¯ãããªãã«ãåç¥ã ã¨ã¯æãã¾ããï¼gcc-4.6.0ã¯ãã°ã¨ãè²ã ã¢ã¬ãªã®ã§ï¼ã©ãããªãã¤ãå æ¥åºã4.6.2ãã¤ã³ã¹ãã¼ã«ãããã¨ãããã¨ã§ï¼ä¸è¨ã®ãã¡ã¤ã«ãgcc-4.6.2ã«å¯¾å¿ãããããããæ¸ãã¾ããï¼ https://github.com/rhysd/others/blob/master/gcc4.6.0-to-gcc4.6.2.patch 使ãæ¹ã¯ä¸è¨ã®ãµã¤ãããããããgcc.rbã¨gcc4.6.0-to-gc
September 27, 2011 This article was contributed by Matt Davis The free and open source community is largely based on extensibility, sharing, and modularity, so projects will often provide an API that allows users to add functionality. One way to accomplish that is via plugins to the base project, which allows a user to customize the project to their needs and easily share the result with others wh
ãã®æ¬ã®ã#77 é¢æ°ã¸ã®enter/exitãããã¯ãããã§ãGCCã®ã³ã³ãã¤ã«ãªãã·ã§ã³-finstrument-functionsã使ããé¢æ°ãå¼ã³åºãããæãé¢æ°ãã復帰ããã¨ãã«ããã¯ãå ¥ããæ¹æ³ãç´¹ä»ããã¦ãã¾ããããã¯é¢æ°ã®ã·ã°ããã£ã¯ä»¥ä¸ã§ãã void __cyg_profile_func_enter(void* func_addr, void* call_site); void __cyg_profile_func_exit(void* func_addr, void* call_site); ãã®ããã¯å¦çã«æ¸¡ãããã¢ãã¬ã¹ããé¢æ°åãåºãã¦ãé¢æ°ã®å®è¡ã追ãç°¡æãªé¢æ°ãã¬ã¼ãµãä½æãã¾ããã¢ãã¬ã¹ããé¢æ°ã«å¤æããæ¹æ³ã§ä¸çªç°¡åãããªã®ã¯ãåãæ¬ã®ã#62 dlopenã§å®è¡æã«åçãªã³ã¯ãããã§glibcã®GNUæ¡å¼µã¨ãã¦ç´¹ä»ããã¦ããdladdré¢æ°ã§ãã #i
Blogged by Ujihisa. Standard methods of programming and thoughts including Clojure, Vim, LLVM, Haskell, Ruby and Mathematics written by a Japanese programmer. github/ujihisa Since Matz Ruby Implimentation ruby 1.9.3 has been released as preview release, I think that all Rubyists should abandon the ruby they are usually using, ruby 1.9.2, and should use 1.9.3 now. Ruby 1.9.3 also supports clang ins
Cè¨èªã«ã¯ããããã·ããæ¼ç®åã¨ãããã®ãããã¾ããå·¦ã·ããæ¼ç®å(<<)ã¨å³ã·ããæ¼ç®å(>>)ã§ããåããããæ¼ç®ã§ãããããåä½ã®è«çå(|)ãè«çç©(&)ãNOT(~)çã¯ã®æ¹ã¯ããã©ã°åã®å¤æ°ã®å¦çã§ä½¿ãããäºãå¤ãæ°ããã¾ããããããã·ããã®æ¹ã¯ä½¿ç¨ãããã±ã¼ã¹ã¯ãã¾ããªãããããã¾ããã ãã¦ããã®ãããã·ããæ¼ç®åã§æã åé¡ã«ãªãã®ãã符å·ããããç«ã£ã¦ããæã®å³ã·ããæ¼ç®ã§ããè¦éãããã¡ãªãã¤ã³ãã¯ã åã«ãã£ã¦æå(ç®è¡ã·ãããè«çã·ããã)ãããããã¨ããã Cè¨èªã®è¦æ ¼ã¨ãã¦ãç®è¡ã·ãããè«çã·ãããã¯ä¸å® Nbitã®ç®è¡ã·ããã¨2ã®Nä¹ã§ã®é¤ç®ã¯ç価ã§ã¯ãªã ã¨ãã£ãã¨ããã«ããã¾ãã ç®è¡ã·ãã(shift arithmetic)ã¨è«çã·ãã(shift logical:åã¯0å å¡«ã·ãã)ã¨ããè¨èããåç¥ãªãæ¹ã®ããã«ã¡ãã£ã¨èª¬æãæ¸ãã¦ããã¨ãã·ããã«ãã£
æè¿ãã¤ãã¿ã¼ã§ "while(1){LOVE++}"ã¨æ¸ãè¾¼ã¾ãã¦ãæ輪ããã£ã¦ã ãã®ã½ã¼ã¹ã¯æé©åã§LOVEãæ¶ãã¦ãã ã®ç¡éã«ã¼ãã«ãªãäºã ã¨ãã話ããã£ãã®ã§æ¤è¨¼ã http://togetter.com/li/144840 ç¨æããã½ã¼ã¹ã¯ãã¡ãã int main() { int LOVE = 0; while(1){LOVE++;} } ããããã¢ã»ã³ãã©ãè¦ã¦ã¿ã¾ããã ã¾ãã¯æé©åæãã gcc -O0 -s hoge.c .file "hoge.c" .text .globl main .type main, @function main: pushl %ebp movl %esp, %ebp subl $16, %esp movl $0, -4(%ebp) ;LOVE=0 .L2: addl $1, -4(%ebp) ;LOVE++ jmp .L2 ;JUMP TO
GCC 4.4ãããããè¦ãããªã®ã§ããã-Qãªãã·ã§ã³ã使ãã¨ã æé©åçã§ã©ã®ãªãã·ã§ã³ãæå¹ã«ãªããããããã¿ããã§ãã å ·ä½çã«ã¯ä»¥ä¸ã®ãããªã³ãã³ãã§ãã % gcc -O2 -Q --help=optimize # åã ã®ãªãã·ã§ã³ã«ã¤ã㦠'enabled' or 'disabled'ã確èªã§ããããã§åã¬ãã«ã§ã®éããè¦ã¦ã¿ãã ã¾ã¨ããã®ãé¢åãªã®ã§ä»¥ä¸ã®ãããªã¹ã¯ãªãããèµ°ããã #!/usr/bin/env perl use strict; use warnings; my @levels = qw(-O0 -O1 -O2 -O3 -Os); my @base = qw(gcc -- -Q --help=optimize); my %optimize; for my $level (@levels) { my @cmd = @base; $cmd[1] = $leve
Qtãã¤ã³ã¹ãã¼ã«ããéãlibstdc++.so.6 ã« GLIBCXX_3.4.9ãç¡ãã¨æãããã®ã§ãgccã®ãã¼ã¸ã§ã³ãä¸ãããCentOSã«å ããå ¥ã£ã¦ããgccã¯å¤ãã åä½ç°å¢ CentOS 5.5 gcc 4.5.2 gccãã¤ã³ã¹ãã¼ã«ããã«ã¯ãgmpãmpfrãmpcãpplãlibelfãå¿ è¦ã gmpã®ã¤ã³ã¹ãã¼ã« # wget ftp://ftp.gmplib.org/pub/gmp-5.0.1/gmp-5.0.1.tar.bz2 # tar xjvf gmp-5.0.1.tar.bz2 # cd gmp-5.0.1 # ./configure --enable-cxx # make # make check # make install pplãã¤ã³ã¹ãã¼ã«ããã«ã¯ãgmpã§c++ããµãã¼ãããã¦ããå¿ è¦ãããã mpfrã®ã¤ã³ã¹ãã¼ã« # wget http:
以ä¸ï¼ã¨ã¤ããªã«ãã¼ã«ã®è¨äºã¨ãã¦æ¸ãããã®ãªã®ã§ç¾ä»£ã«ããã¦èªã価å¤ã¯ããã¾ããï¼ ããã°ã«ã¯å°éå¾åãã¦è¨äºãæ¸ãäºã«ãªã£ã¦ãçåå ±åã¨ãã¦ã¯æããã«é ãã§ããâ¦ãã§ããtwitterã§ã¯å æ°ã«ãã£ã¦ãã¾ãããä»ã¯å®å®¶ã«ãã¾ãã ãã¦ãã¤ãå æ¥æ±äº¬ã§è¨èªéè«ä¼ã¨ããã¤ãã³ãããã£ã¦ããã®æã«ã¤ãã°ã®ã家ã®ç¾ç¶ãè¦ã¦æ¥ã¾ãããç¹å¥å¤§å¤ãªäºãèµ·ãã£ã¦ããããã§ããªãå¿åºããã¨ãã¾ããã ãã®ç¿æ¥ã«ã¯ã彼女ã¨æ±äº¬ã¯æ°å®¿ãã«ã9ã§ãµã¨ãã©ããããµã観ãã®ã§ããããã®æã«gcc-4.6( http://gcc.gnu.org/gcc-4.6/changes.html )ã®è©±ãã§ã¾ããã gccã®è©±ãåºãã®ã¯Cã©ã³ã²ãã¸ã®è©±ããã¦ãããããªã®ã§ãããsequence pointãã©ããã¦å¯ä½ç¨å®äºç¹ã¨è¨³ããã®ã§ãããããã¨ãããããçåãçºç«¯ã ã£ãæ°ããã¾ãã "å¯ä½ç¨å®äºç¹"ãèªèããäºã®ç¡ãæ¹
GCC 4.6 RCã 3æ14æ¥ã«åºã¾ããããªãã§ããããæ£å¼çãåºãã㨠æãã¾ããChanglogãè¦ã¦ããã¨æ°ã«ãªãæ©è½ãããã¾ãããããã stack-usage. é¢æ°ãã¨ã®ã¹ã¿ãã¯ã®ä½¿ç¨éã確èªã§ããã¨ãããã®ã§ãã ãã㯠Adaã ã¨ã ãã¶åããå®è£ ããã¦ãããã§ããã©ã4.6ãã㯠ã©ã®è¨èªããã§ãå©ç¨ãããã¨ãã§ãã¾ãã ç°å¢ Ubuntu 10.10 x64 GCC4.6ã®ã¤ã³ã¹ãã¼ã« GCC 4.5.1ããã«ããã - Life is very short GCC 4.5.2ããã«ããã - Life is very short ã¨åããªã®ã§ããããã®è¨äºãåç §ãã¦ãã ããã æºåããã§ããã°ä»¥ä¸ã®ã³ãã³ãã§ä½æã§ãã¾ãã % tar xf archives/gcc-4.6.0-RC-20110314.tar.bz2 % cd gcc-4.6.0-RC-201103
GCC-4.6ã® stack-usageã使ã£ã¦ã¿ã - syohexâs diary ã¨ã³ã¼ã«ã°ã©ããçµã¿åããã¦ä½ãã§ããªãããªã£ã¦æã£ããã ãã©ã ä»ã®ã¨ããä½ãã§ãã¾ããã§ãããã³ã¼ã«ã°ã©ãã®å³ã ãä½ã£ãã®ã§ å¿ä½ãªãã®ã§è²¼ã£ã¦ããã¾ãã ç°å¢ Ubuntu 10.10 x86_64 ã½ã¼ã¹ coreutils-8.10ã使ãã¾ããã ã½ã¼ã¹ã¯ src/{ls.c,ls-ls.c}ã§ãã ä½ãæ¹ ä¸æ¦coreutilsãä½æãã¦ãã¨ã§åå¥ã«ã³ã³ãã¤ã«ãã¾ãã makeæã«èªåçæãããã¡ã¤ã«ããããlsã®ã½ã¼ã¹ã ãã§ã¯ ãã«ãã§ããªãããã§ãã % ./configure % make % cd src % gcc -std=c99 -g -pg -O2 -I. -fstack-usage -I../lib \ ls.c ls-ls.c ../lib/libcoreutils.a
大æµã®ããã°ã©ãã³ã°ã³ã³ãã¹ãããªã³ã©ã¤ã³ã¸ã£ãã¸ã§ã¯C/C++ãé¸æã§ãããããã大ä½gccã§ãã(ãããã¯ãé¸ã¹ã)ãã¨ãå¤ãããªã®ã§ãgccã§æ¸ãã¨ãã«è¦ãã¦ããã¨ä¾¿å©ããããããªããã¨ãæ¸ãã¦ãããããããgccã®ãã¼ã¸ã§ã³ãã³ã³ãã¤ã«ãªãã·ã§ã³ã«ãã£ã¦ã¯ã³ã³ãã¤ã«ã§ããªãã£ããããå¯è½æ§ãããã®ã§ç©æ¥µçã«ä½¿ããã®ã§ããªãã¨æããã©ã é¢æ° algorithmãincludeããã¨ãã«__gcdã使ããã®ã¯ããªãå½¹ç«ã¤ããã ããlong longã§ã¯åãããåããªãã£ããããæ§ã (å人çãªçµé¨ã§ã¯åããã¨ãå¤ããããª)ã stdio.hãstring.hãmath.hã«å ¥ã£ã¦ã大é¨å(èªåãææ¡ã§ãã¦ãåã«ã¤ãã¦ã¯å ¨é¨)ã®é¢æ°ãã__builtin_ãå é ã«ä»ããã¨includeããã«ä½¿ãã(__builtin_printfã¨ã)ã ä¸ã«æããã®ã¯åã«includeããã°ããã ããª
void* memset64(void* d, uint64_t i, int n) { asm("cld; rep stosq;" :: "D"(d), "a"(i), "c"(n) : "memory"); return d; } æè¿ã® CPU ã¯ã¯ã½è³¢ãããã®ãããä¸æã«æ㧠loop unrolling ããããããéã« CPU ã«ãããã¯ã«ã¼ããªãã ããããï½ãã¨ããã®ãæ示çã«æ示ãã¦ãããã»ãã CPU å´ãåæãã¤ä¸æ°å³ã«æé©ãªæåã示ãããããããããæå³ã§ã¯ç¾ä»£ã¯ãã種㮠CISC ã«ããµã³ã¹ã¨ãã¹ãææã§ã¯ããã®ã ãã( 10 å¹´å¾ã¯ããããã)ã
25/01/2011 Compilers status: Visual C++, GCC and LLVM (updated)RSS Feed ~ Comment: by email - on Twitter ~ Share: Twitter - Facebook - Linked In - Google+ - Permanent link For this follow up of my previous post, I decided to use my project Ovt'sa, a simple CPU raytracer, including Visual C++, GCC but also LLVM, using GCC 4.2 front-end. Ovt'sa is a pure C++ program but not especially effective for
ãã¨ãã° libevent ã®ãã㪠C è¨èªã§ããããã¤ãã³ãé§ååã®ã©ã¤ãã©ãªã C++ ãã使ã£ã¦ããã¨ãC++ ã®ã¡ã³ãé¢æ°ãã³ã¼ã«ããã¯ã¨ãã¦ã»ããã§ããããããããã¨ãå¤ãã§ãããã以ä¸ã®ããã«ããã°ã§ãã¾ãã ãã¨ãã°ãã³ã¼ã«ããã¯é¢æ°ãã»ããããé¢æ°ã®åãã void set_foo_callback(void (*)(void* cb_arg), void* cb_arg); ãªãã以ä¸ã®ããã«ã¯ã©ã¹ã¨ã¡ã³ãé¢æ°ãå¼æ°ã«ã¨ããã³ãã¬ã¼ãé¢æ°ãå®ç¾©ãã template <typename T, void (T::*FUNC)()> void to_foo_callback(void* cb_arg) { T* obj = reinterpret_cast<T*>(cb_arg); (obj->*FUNC)(); }以ä¸ã®ããã«åã渡ãã°ããã class K { publ
linux2.6.34ã®switch_to()ãè¦ã¦ãããã¤ã³ã©ã¤ã³ã¢ã»ã³ãã©ã§è¦æ £ããªãè¨è¿°ããã£ãã®ã§ãã¡ãã£ã¨ç¢ºèªãã¦ã¿ãã test1()ã¯é常éãã«0çªç®ã1çªç®ã£ã¦æãã§å¤æ°ã使ã£ã¦ããã¿ã¼ã³ã§ãtest2()ã¯ååãä»ãã¦ã¢ã¯ã»ã¹ããæ¹æ³ããããªããæ¹ã£ã¦åãããã£ãã£ãï¼ ã¾ããååãã¤ãããæ¹ãåãããããã¦è¯ãã®ã§ããã #include <iostream> using namespace std; void test1(int src) { int dest = 0; __asm__ __volatile__("mov %0, %1;\n\t" :"=r"(dest) :"r"(src) ); cout << "dest is " << dest << " : src is << " << src << endl; } void test2(int src) { i
ãªãªã¼ã¹ãé害æ å ±ãªã©ã®ãµã¼ãã¹ã®ãç¥ãã
ææ°ã®äººæ°ã¨ã³ããªã¼ã®é ä¿¡
å¦çãå®è¡ä¸ã§ã
j次ã®ããã¯ãã¼ã¯
kåã®ããã¯ãã¼ã¯
lãã¨ã§èªã
eã³ã¡ã³ãä¸è¦§ãéã
oãã¼ã¸ãéã
{{#tags}}- {{label}}
{{/tags}}