タグ

2015年6月25日のブックマーク (6件)

  • 64ビットCPU(AMD64+EM64T)でアセンブラ

    64ビットCPU(AMD64+EM64T)でアセンブラDellのPenrynノート(Core2Duo T8300)を購入し、 Vista(x64)上に環境を構築しました。 いままでXP上でやっていたことがすべて Vista(x64)上でできるようになり、 ようやくメインマシンがx64になりました。 重い重いといわれるVistaですが、Vista SP1を導入し、 いくつかの機能を停止したり、設定を変更することで、 XPと比べても遜色ない軽快さが得られています。 環境構築時の備忘録は、時期未定ですが、 このサイトに載せる予定です。 64ビットネイティブの環境はきわめて快適です。 目次 プログラミングメモ リンク集 ブログ メモ 管理人宛メール ソフトウェア Turbo Factorial (x64/AMD64/EM64T対応、ベンチマークにどうぞ。)

    hiroyukim
    hiroyukim 2015/06/25
  • http://www.marbacka.net/asm64/arkiv/undocumented_opcodes.html

  • GolangでSIMDプログラミング - ( ꒪⌓꒪) ゆるよろ日記

    以前から気になっていたSIMDプログラミングをGoでやってみた。 Single Instruction Multiple Data (SIMD) 演算とは1回の命令で複数のデータを同時に処理する演算です.近年の CPU には SIMD 演算を行うことができる SIMD 演算器が搭載されており,Intel 社の CPU ならば Streaming SIMD Extensions (SSE) を用いることで SIMD 演算を行うことが可能です.SSE は CPU に搭載されている 128bit レジスタを用いて演算を行うため単精度データならば4つ,倍精度データならば2つずつ演算を行うことができます.また,近年 SSE 後継の SIMD 拡張命令として Intel Advanced Vector eXtentions (AVX) が登場しました.AVX は第2世代 Intel Core i シリ

    GolangでSIMDプログラミング - ( ꒪⌓꒪) ゆるよろ日記
  • 関数のスタック使用量を計算する方法 - ソフトウェアエンジニア現役続行

    POSIXが使える環境でC言語のプログラムを書いていて、特定の関数が使用するスタックの量を調べる必要がありました。 別スレッドを生成してその特定の関数を実行させることで、スタックの使用量を調べることができます。あらかじめ別スレッドのためのスタック領域用に明示的にメモリを確保しておき、マジックナンバーで充たしておきます。そしてpthread_setstack()によって別スレッドがそのスタック領域を使用するようにして、別スレッドで関数を実行させます。実行後にスタック領域のマジックナンバーを見ることで、関数が使用したスタックの量が分かります。 ソースを読んだほうが分かりやすいかも知れません。以下では function() という関数が使用したスタックの量を標準出力しています。 // コンパイル方法:gcc -Wall -Werror -std=gnu99 -o check_used_stack

    関数のスタック使用量を計算する方法 - ソフトウェアエンジニア現役続行
    hiroyukim
    hiroyukim 2015/06/25
  • memologue - g++ でのスタック使用量の動的解析

    Linux Memory Overcommitment の話とも関係するが、組み込み機器向けのプログラムを設計・実装する際は、たとえターゲットがMMU/仮想記憶を利用できるモノであるとしても、使用するスタック量の見積もりくらいはしておきたいと思っている。 UNIXではsetrlimit(2)で、スタック使用量をunlimitedにしてしまえば、スタック使用量の自主制限にひっかかってsegvすることはなくなる。ちなみに ulimit -s での制限は、Linuxであってもstrictに効く。しかし、物理的な限界は確実に存在するわけで、スタックのある領域にアクセスした時に物理ページに空きがなければ、プロセスはSIGSEGVで死ぬかSIGKILLで殺されてしまう。 C言語で書かれたプログラムであれば、再帰や関数ポインタさえ上手に処理(コーディング標準で制限など)できれば、コードを静的に解析して最

    memologue - g++ でのスタック使用量の動的解析
    hiroyukim
    hiroyukim 2015/06/25
    “Linux Memory Overcommitment の話”
  • Linux におけるスレッド数の上限 | yunabe.jp

    並行 (Concurrent) 処理を実装する方法としてスレッドは非常に強力なツールです。 スレッドを使えば同時に1つの処理しか行えない既存のプログラムに大きな修正を加えることなく、 並行処理を実装することが可能です。 またイベントとコールバックを複雑に組み合わせた非同期的なプログラムに比べて、 同期的なプログラム (例えばファイルの読み込みにコールバックが出てきたりしない普通のプログラム)は プログラムの流れを自然に書くことができ、 可読性・保守性・テスト、デバッグのしやすさの面で遥かに優れています。 スレッドを使うとプログラムをそれほど複雑・難読化にせずに並行処理が実装できます。 一方でスレッドを使った並行処理には欠点もあります。 欠点の1つは、スレッドモデルでは1つの処理に対して1つのスレッドを用意するので、 システムのスレッド数の上限で同時に行える処理の数が決まってしまう点です。