ゆとりーなの日記

日記的な事を書いて行くと思はれる

颱風の字

コミケの季節にこんな感じのネタ投稿を行なひました。「年齢確認お願いします。たいふうの漢字表記は?」 A「台風」 B「颱風」 C「臺風」 「Aさん免許証の提示を。Bさんようこそいらっしゃいませ。あとCさんはにわかですね。」 #年齢確認行動大喜利— 隅須 ゆ…

GNU擴張({})がやばい

普通複數のカウンタをインクリメントするfor文を書く場合、 for (i = j = 0; i < N; ++i, ++j) { } としますが、今日twitterにて for (i = j = 0; i < N; ({++i; ++j;})) { } といつた回答を見かけたので、そんなん通る訣ないだらうと思つてコンパイルしてみ…

日傘は女の物か?

最近男の日傘がどうのかうのと云つた話がよくTLに流れてきます。日傘を差すと強い日光が防げて色々とメリットもあるのにどうも男が差すと「女つぽい」とか「男らしくない」みたいな話が出て來て"あーだこーだ"みたいな話です。どうも男が日傘差すと微妙と云…

機械語で語らう

C言語の會話でprintf("おはやう");みたいにするのは本質的にはC言語で會話してゐるとは言へないと云ふ話がありましたので、ここは大人しく機械語で會話出來るやうになるべく、機械語で最も話されてゐる言語、x86語の文法を御浚ひしておきませう。 まづ基本的…

「訊く」つて戰前本當に主流ぢやなかつたのか

この間私の中で「質問して下さい」的なニュアンスで、「訊く」と「聞く」どつちを使はうか迷つたと云ふ事案がありました。その時は結局「訊く」だと訊問からの問い詰めるつぽくてあれかなと思つたので結局無難な方の「聞く」を選んだのですが、これを機に今…

とあるプラーのverilog遊戲

最近verilogを弄つて遊んでゐるのでチラチラプラー的感想でも書いてみようかなと思つたので書いていきますよと。 まあ全體的な感想を言へば可也クソに感じますね。特に組合せ囘路を書くのが辛いです。まあ勿論verilog初心者の感想なので、後ろから打たれる可…

最近マイブームの可變長引數

風呂あがりに何となくBinary Hacks ―ハッカー秘伝のテクニック100選高林 哲 鵜飼 文敏 佐藤 祐介 浜地 慎一郎 首藤 一幸 オライリー・ジャパン 2006-11-14売り上げランキング : 131355Amazonで詳しく見る by G-Toolsを讀んでゐたのですが64bit環境のLinuxでN…

C++をJavaScriptに變換するあれ

C++

今日はBoost勉強會に行つて來た訣ですが、その中でC++のHello World!をJavaScriptにすると12萬行になると云ふ話があつたので自分でも試してみました。 まづ普通にC++です。 // hoge.cc #include <iostream> int main() { std::cout << "Hello World!" << std::endl; } </iostream>…

自作CPUはじめました

さてさて仕事も全然決つてゐませんし現實逃避感が否めませんが、 折角手元に AZPR EvBoard AZPREVBOARD 余熱@れすぽん製|マルツオンライン とCPU自作入門 ~HDLによる論理設計・基板製作・プログラミング~水頭 一壽 米澤 遼 藤田 裕士 技術評論社 2012-10-2…

可變長引數と非POD

C++

かういふ可變長引數を取る函數があるとします。所謂printf系男子ですね。 void foo(const char *f, ...); で、これにかういふ構造體を用意します。コンストラクタを自分で定義してゐるので非PODです。 struct hoge { hoge() {} operator int () const { retu…

なんだかんだでC言語が最強疑惑

久々の日記はハードウェアを叩くとかそんな話です。 あるハードを叩くコードをC言語で用意しようとすると大抵かうなります。 #define HOGE_BASE 0xffff0000 #define HOGE_HUGA_OFFSET 0x00 #define HOGE_HAGE_OFFSET 0x04 #define HOGE_HUGA (HOGE_BASE + HO…

だけど今日のネタはループ

C++

ふとしたきつかけで氣になつたので、ループ周りのコードがどんなになるのか眺めてみたのでメモしておきます。 // 安直なfor文 #include <vector> std::vector<int> v(100); int main() { for (auto it = v.begin(); it != v.end(); ++it) { *it = 0; } } 0000000000400580 <main></main></int></vector>…

日本の漢字はヲハコンにされてしまつた

明日は卒業式らしいので、ここらで漢字に對する愚痴を垂れ流すとしませう(謎の順接)。 私が日本の漢字に疑問を持つたのは恐らく中學の頃の國語の授業で「辻斬り」と云ふ單語が出て來たのが最初の樣に思はれます。この邊の記憶は大分昔のことなのでやや曖昧…

H8でリンク時最適化など

C++

折角gcc4.7系を使つてゐる訣だしリンク時最適化を試してみようとかさういふあれです。 コンパイルオプションに -ltoを付けると別飜譯單位の函數も空氣讀んでインライン化してくれるらしいです。 結論からいふとされました。 //interrupt.cc namespace aq { n…

switchと後藤さん

最近少々興味深いコードを見かけました。 void hoge(int val) { printf("value %d\n"); switch(val) { case 1: printf("value is 1\n"); break; case 2: printf("value is 2\n"); break; . . . . case 17: printf("value is 17\n"); break; defualt: printf(…

麻雀の話

C++

そろそろ麻雀がやりたくなる季節ですのでこの邊りで一度コンピュータ麻雀をC++で作る時の話でもしてなんとか凌ぎませうといふことでこの流れです。 さて、麻雀で大事な事といへば、先づ牌の扱ひ方です。牌捌きの綺麗さは麻雀に於て重用な要素ですね。これを…

int main(void)だけどコマンドライン引數餘裕でした

C言語のmain函數は特殊です。引數を取らないパターン(int main(void))、コマンドライン引數を取るパターン(int main(int argc, char **argv)等)を書くことが出來ます。 今回はint main(void)のパターンでもmainを呼ぶ側はきつとコマンドライン引數をレジスタ…

インライン

卒論がそろそろ危うい季節になってきましたが冷静にインライン展開することで凌いでいきましょうということでC++のインライン展開の話です。 取り敢えずこういうコードがあったとすると #include <cstdio> template <typename T> void foo(T t, const char *str) { t(str); } str</typename></cstdio>…

なんとなくRPGの企画考えてみた

面倒くさくて全然作る気にならなかったのですが結構前から暖めていたネタです。非常に私得なRPGとなっております。以下はその簡単な原案です。いろいろ状況が変わり次第加筆修正を行いますし、実際に作るかどうかは未定です。 シナリオ 16日後に世界が滅ぶら…

日本語フィーバー開発

麻雀用語をC++の識別子にするとき結構単語考えるの面倒なんで日本語識別子使えんかなーとか甘えたこと考えていたらこんなページGCCで日本語識別子を使う | 株式会社きじねこが見つかりました。 適当に要約するとユニバーサル文字が実は使えるってんで前処理…

staticなconstexprメンバ変数を函数の引数に入れると詰むことがある

C++

まぁ要するにこういうコードです。 template <typename T> struct Hoge_ { static constexpr Hoge_ hoge{0}; private: constexpr explicit Hoge_(int i) : val(i) {} int val; }; using Hoge = Hoge_<void>; void Foo(Hoge h) {} int main() { Foo(Hoge::hoge); } Hoge::hogeが</void></typename>…

函数型の変な方

C++

いわゆる函数型?の後置形式をstd::functionのテンプレート引数に突っ込んでみたら通ったとかただそれだけのエントリーです。まる。 #include <functional> #include <iostream> void hoge() { std::cout << "hoge" << std::endl; } int main() { std::function<auto () -> void> h{&hoge}; h(</auto></iostream></functional>…

enum classの演算子オーバーロードの見えている地雷

C++

ちょいとenum classの話題が密かに繰り広げられたんでこの前嵌った罠でも晒しておきます。 enum classは整数型に暗黙の型変換が効かないので次のようなコードは通りません。 enum class Hoge { foo = 1, bar = 2, huga = 3 }; int main() { auto o = Hoge::f…

テンプレートfriendが地雷

C++

昨日辺りにtwitterを見てて思ったことをさらっとメモしておきます。 こういうコードがあるとコンパイルエラーになるってのがあります。 template <typename T> struct Hoge { Hoge() = default; template <typename U> Hoge(const Hoge<U> &rhs) : hoge(rhs.hoge) {} private: T hoge = </u></typename></typename>…

-O3すると警告が出る

七対子の聴牌判定を取り敢えず適当にこう書いてみたわけです。 // 戻り値の32bitの中立っているビットの牌が待ち // 1bit目1m,2bit目9m,3bit目1p... // 引数は各牌の所持枚数 // kind[0]=1mの枚数,kind[1]=9mの枚数,kind[2]=1pの枚数... std::uint32_t GetTi…

goto文豆知識?

C++

ひょうんなことからgoto文を書く機会があったのですがそのとき事故ったのでメモしておきます。 void hoge() { goto foo; foo: } これはコンパイル通らないらしいです。 void hoge() { goto foo; foo: return; } ラベルの後には最低でも一文要るとかそういう…

thisキャプチャしたラムダ内でthisをキャプチャしたラムダを含む配列が作れない

C++

これがコンパイル通らないっぽいです。g++4.7.0です。 #include <functional> struct hoge { void foo() { } void bar() { auto h = [this] { std::function<void ()> f[] = {[this] {bar();}}; }; } }; int main() { hoge h; h.bar(); } エラーメッセージ the value of 'this' is</void></functional>…

フィーバー秋刀魚オンライン(仮)

論文輪講から目を背けるために開発を始めた三人麻雀ゲームですが、ボチボチ形になってきたので現状でも。 大分見た目が秋刀魚っぽくなってきました。今回はDXライブラリに甘えたのでこの辺りはサクっとできました。牌の画像は麻雀素材 [麻雀王国]のものをあ…

YMZ294をH8/3069Fで鳴らす

C++

結局PSG音源には秋月で売っているYMZ294を使うことにしました。制御及び回路は私の頭でも割かしなんとかなって何とか音が鳴らせました。雑音が非常に乗ってますが。こういうのはコンデンサ様を使ってなんとかするものなんですかね。 アンプはNJM386BDを使っ…

ゲーム機でも作ろう

というわけで見つけたものをメモしておくという流れです。いいのを見つけたら追記する方向で。 マイコン C++11使いたいんでgcc使えるマイコンがいいというわけで出てきた候補達がこちら。あとは秋月でそれなりにお手頃価格で買えるってのも地味に条件だった…

アセンブリでマクロ

H8の割り込みハンドラ、こいつはアセンブリで書いているわけですがハンドラの数だけ似たようなコピペをするのが気持ち悪いんでどうにかなんないのと思い最初Cプリプロセッサで足掻いてみたのですがどうも上手くいきませんでした。 調べてみたらgnu asにはマ…

H8/3069Fマイコン用C++11製フルスクラッチサムシング

C++

例によってレポジトリ作りました。 https://github.com/nagoya313/AQ

12ステップ組込みOS自作本もくもく会に参加してきた

C++

お誘いがあったので行ってきました。C++やってました。 自作optionalがバグってそうというところで終わったのですがお家に帰ってから軽くぐぐったところ問題発覚しました。アライメント周りでした。placement newを単純なchar配列でやると残当するという話っ…

H8のGCCでC++やるときの話

C++

「12ステップで作る組み込みOS自作入門」はC言語の本なんで我々Cぷらーはいろいろとやらなければいけないことがあるんですね。 まずリンカスクリプトに書いてあるシンボルにアクセスするときには extern "C" { extern シンボル名の先頭_を取ったもの; } とし…

H8マイコンでC++11

C++

この本です。12ステップで作る組込みOS自作入門坂井 弘亮 カットシステム 2010-05売り上げランキング : 13418Amazonで詳しく見る by G-Toolsgccも4.7が出たことですし、gcc4.7で楽しいC++11生活を送りたいじゃないですか。まぁ本ではgcc3系、且つ使用言語はC…

函数なしで1~100までの合計を表示

変数なしでってのがあったのでそれなら函数なしっていうのがあってもいいじゃないという話です。 const char *result = "5050\n"; int __attribute__((section(".plt"))) main[] = { 0xC7489090, 0x000001C0, 0xC7C74800, 0x00000001, 0x25348B48, reinterpr…

Win32APIとBoostだったらBoostの方が好き...だけど

個人的にはthreadやらfilesystemやらはWin32APIを直接叩くよりは遥に使いやすい様な気がします。C++のライブラリなのでRAIIとかで管理されていたり函数オブジェクトが渡せたりとC++との親和性も高いです。ついでに標準ライブラリに近い名前付けで目にやさし…

闇鍋勉強会で発表してきました

というわけで3/31(土)に某八王子の方で開催された闇鍋勉強会で怪しい発表をしてきました。内容はDLLインジェクションやらAPIフックやらとなってます。発表時にコードの中で抜けてた部分があったりしたので若干の修正があったりしますが取り敢えずスライドを…

書籍に於けるハンガリアン再考

C++

何だかんだでシステムハンガリアンでコードが書かれている書籍は結構あって最初なんだかなーと思っていたんですが、最近案外理があるのかもと思い出したのでさらっと書いておきます。 書籍って何だかんだで使える領域に制限があるので載せるコードは短く書け…

函数ポインタを渡すコールバックにメンバ函数を渡す【黒魔術編】

函数ポインタを渡すコールバック的なサムシングにメンバ函数を渡すというよくあるネタです。例によって適当な領域を確保してそこにメンバ函数を呼ぶマシン語を書き込んでしまおうというあれです。 今回の環境は64bitはLinuxのGCCで試しているので他の環境で…

変態的文法

C++

C++で函数ポインタを返す函数の宣言と定義をtypedef縛りでやってみたら予想通りグロかったのでメモしておきます。 void func(int) {} void (*hoge ())(int); void (*hoge ())(int) { return &func; } 続いて函数ポインタを返すメンバ函数とついでにメンバ函…

OpenGLとcairommで文字列描画

今回はLinux環境のOpenGLで文字を書くならこれかなーという話です。ubuntuとかのディストリビューションならgtkmmがデフォで入っているっぽくて、その中にcairommもいるっぽいのでクライアント側で何か導入してもらう必要がないのもいい感じですかね。あとな…

どこまでもハイブリッドは出来ないとかそういう話

とあるObj-Cのクラスからしか呼ばないとあるC++クラスのメンバ函数があった場合にはそいつをprivateにしてとあるObj-CのクラスをとあるC++のクラスのfriendにしたいなとか思うわけです。ここでObj-C++のハイブリッド力が試されるわけですが、 class cpp_clas…

xlibとglxとimlib2で画像表示

この時代にこの組み合わせを使う人がいるかについては疑問が残りますがメモ程度に。 #include <iostream> #include <memory> #include <string> #include <X11/Xlib.h> #include <X11/Xutil.h> #include <GL/glx.h> #include <GL/glu.h> #include <Imlib2.h> // スマポで管理したいよねDisplay編 struct display_delete { void operator ()(Disp</imlib2.h></gl/glu.h></gl/glx.h></x11/xutil.h></x11/xlib.h></string></memory></iostream>…

C++でプロパティ

C++

いろんなところで見かけるこのネタですが、Obj-Cをやってるとどうしても気になってくるのでついやっちゃいました。 // 読み込みのみ struct readonly {}; // 読み書き両用 struct readwright {}; // メンバ変数からプロパティを作成 template <typename T, typename Class, T Class::* Pointer> class synthes</typename>…

CocoaのC++ラップが地味に面倒

この間レポジトリを作った某プロジェクト、密かに合間を見つけて進めてはいるのですが、なかなか問題点も多くてですね。UIViewのラップをどうするかが考え物なわけですよ。 class view : boost::noncopyable { public: explicit view(const CGRect &frame) :…

iPhoneアプリをC++っぽく開発できたらいいな

ってことでレポジトリだけ作ってみました。GitHub - nagoya313/saten: iPhoneアプリをC++っぽく開発できたらいいな 何をするかは未定ですが、コンパイラはclang++、C++11とBoost必須のいつもの構成であることは間違いないかと思います。

これってダメだっけ

C++

#include <unordered_map> int hoge(const std::unordered_map<int, int> &m, int n) { return m[n]; } int main() { std::unordered_map<int, int> m; m[0] = 0; hoge(m, 0); } constなmap/unordered_mapだとoperator[]って使えないんでしたっけ。 っと思ったら要素がなかったら勝手にデフォコ</int,></int,></unordered_map>…

gtkmmでglx

gtkmmでOpenGLをやるとしたら便利なラッパとしてgtkglextmmというものがありますが敢えてglxを使うとした時にどうすればいいかの雰囲気が掴めたっぽいので纏めておきます。あくまで雰囲気なので悪しからず。 取り敢えずglxを使うにはXのディスプレイとウィン…

今年の挨拶

#include <iostream> int main() { std::cout << "あけましておめでとうございます。" << std::endl; }</iostream>