ARM エミュレータ環境はなぜ必要なのか RaspberryPI を始めとするBareMetal やスマートフォン等に広く搭載されているプロセッサです。Core i7 などのIntel 製プロセッサとは命令セットが異なるため、ARM プロセッサ用バイナリをPCで実行することはできません。 ちょっとしたプログラムを作成し、ARM 環境での動作確認をしたい場合でも、ターゲットとなるボードがなければ実行できないのは大変不便です。 そこでQEMU という有名なエミュレータソフトウェアを用いてお手軽にARMエミュレータ 環境を作成し、簡単なプログラムを動かす方法を解説します。環境はUbuntu を想定しています。またプログラム例はC言語となります。 ユーザーモードエミュレーションの利用 今回の方法ではユーザーモードエミュレーションというQEMU の機能を利用します。これはARM 環境を完全にエミュレ
Pythonを使っていると, Python遅い・・・ -> C++で一部のメソッドだけ実装したい というシナリオはかなりの人が通る道だと思う. だが, その手段がありえぬ程多い・・・. pythonとc++のインターフェイスの比較という記事を参考にした結果, とりあえずBoost.Pythonを使うことにした. 理由は, ファイル数が大して増えない(swigと比較して) 呼び出し側に汚い記述が入らない(ctypesと比較して) 変な言語覚えなくていい(Boostは最早変な言語みたいな気もするけど) あたり. numpyのarrayも使えるし.(ドキュメントやばいけど) 公式チュートリアルを読めば大体わかるんだけど, まあ日本語メモとして. 以下, 環境はubuntu, コンパイラはg++, Boost.Pythonはaptから入れた後とします. では, 簡単なプログラムから始めよう. まず
Python API¶ Python/C APIチュートリアル : http://docs.python.org/extending/index.html Python/C APIリファレンス : http://docs.python.org/c-api/index.html Python APIはPythonインストール標準のC言語APIを使用し、拡張モジュールを作成します。 #include <Python.h> static PyObject * fact(PyObject *self, PyObject *args) { int n; int i; int ret=1; if (!PyArg_ParseTuple(args, "i", &n)) return NULL; for (i=n; i>0; i--) ret *= i; return Py_BuildValue("i",
This chapter describes the basic operation of SWIG, the structure of its input files, and how it handles standard ANSI C declarations. C++ support is described in the next chapter. However, C++ programmers should still read this chapter to understand the basics. Specific details about each target language are described in later chapters. 5.1 Running SWIG To run SWIG, use the swig command with opti
CentOSでgdbを使おうと思った時に色々戸惑ったのでメモ。 まず使おうとすると以下のようなエラーが発生。 use: debuginfo-install glibc-2.12-1.47.el6_2.5.x86_64 ・・・ debuginfoが無いようなのでインストールするようにとのこと。 debuginfo-install コマンドを使ってインストールします。 ただ、言われたとおりdebuginfo-installコマンドを利用すると 「No debuginfo packages available to install」といったエラーが発生してしまうので 以下のように回避してインストール。 nogpgcheck は普段使わないリポジトリを有効にするオプションです。 /etc/yum.repos.d/*.repo に記載されている無効("enabled=0")のリポジトリ を一回限り有
ポインタの裏話 岡﨑 直観 okazaki at ecei.tohoku.ac.jp http://www.chokkan.org/ @chokkanorg ポインタの裏話 プログラミング演習A 1 このような説明を 覚えていますか? 知らなくても全く問題ありません ポインタの裏話 プログラミング演習A 2 int x = 0; &xは変数xの「アドレス」 「番地」「住所」を返す 変数x 0 &x メモリ空間, 記憶空間 変数xのアド レス(住所) ポインタの裏話 プログラミング演習A 3 ____ / \ 何言ってたんだこいつ? / ⌒ ⌒\ 番地 アドレス ぬるぽ / (●) (●) \ \ / | 、“ ゙)(__人__)" ) __________ \ 。` ⌒゚:j´ ,/ j゙~~| | | | __/ \ |__| | | | || / , \n||
Abstract Factoryパターン Adapterパターン Bridgeパターン Builderパターン Chain of Responsibilityパターン Commandパターン Compositeパターン Decoratorパターン Facadeパターン Factory Methodパターン Flyweightパターン Interpreterパターン Iteratorパターン Mediatorパターン Mementoパターン Observerパターン Prototypeパターン Proxyパターン Singletonパターン Stateパターン Strategyパターン Template Methodパターン Visitorパターン
[1996年2月26日変更 北野 欽一] (訳注:1995年9月4日版に基づく(頭に[Last modified September 4, 1995 by scs.]とあるもの)) [1996年2月26日変更 北野] [Last modified September 4, 1995 by scs.] この記事の著作権は1990年から1995年に渡ってSteve Summitに帰属する。書籍 『C Programming FAQs: Frequently Asked Questions』の内容を著者と出版社 の許可の元、社会への貢献のために使用している。このFAQは書籍版を補足す ることを意図としている。内容は各国の著作権法によって守られる。 (訳注:日本語版の著作権は北野 欽一に帰属する。) 注意: 当FAQは1995年9月に大改訂を行った。章の再構成を行い、すべての問題 の番号を振りなお
メモリプール メモリプールとはあらかじめまとまったメモリ領域を一括で確保した後に確保したメモリ領域を使ってメモリにデータを割り当てる手法、 もしくは確保したメモリ領域をプログラムから効率的に使用/管理できるようなアルゴリズム/データ構造を指す。 CようにGC(ガベージコレクション)を持たない言語ではヒープ領域から確保したメモリの解放はプログラマの責任で行う必要がある。 しかし、実際にCやC++でプログラミングしたことがあるならわかるように確保したメモリを適切なタイミングで 解放するのはとても難しいとまでは言わないまでもあまり簡単なことではない。 単にfreeを呼び出すのを忘れたり、もしくはリストやツリーのような少しでも複雑なデータ構造を扱う際に割り当てられたメモリを適切に解放できずにリークしてしまうようなことは普通に起こりうる。 モダンなOSではプログラム終了後にそのプログラムに割り当てら
C言語講座>サイトマップ C言語講座のサイトマップ C言語講座 ガイダンス [この講座の特徴][この講座をお勧めしたい方][よくあるご質問] 講座の出入り口 [総目次] 入出力(1) [はじめに][最も短いCのソース][画面に文字を表示][整数を入力して画面に表示][文字を入力して画面に表示][浮動小数点数の入力と表示][printf( )とscanf( )の戻り値][関数を自作][変数の記憶クラス][変数の取りうる値の範囲][演算子(1)][演算子(2)][代入演算子][記号定数と変数の型宣言][列挙定数] 流れを制御する [for ループ(1)][for ループ(2)][whileループ][if ( ) - else文(1)][if ( ) - else文(2)][switch - case文][三項演算子(1)][三項演算子(2)][マクロ処理][gotoとlabel] 入出力(2)
(2007.6.26 新規作成。2007.7.11 更新。) C言語でのpthreadの関数の使い方について簡単に解説します。C++だと boost とかを使ったほうがいいですが、内部でどのように動いているか見るためにprimitiveなライブラリを使います。 Windows でも互換ライブラリがあります。vcpkg package - pthreads まず、わざとデッドロックさせてみます。ここまではすでにいろいろなサイトで解説されています。加えて、どうやってデッドロックを回避するか考えてみます。 以下は、Fedora 7 Linuxでテストしています。 題材 題材ですが、あまりにメジャーな「哲学者たちの食事」Dining Philosophers Problem を用います。 哲学者たちの食事; 専ら考えることを生業とする5人の哲学者たちがひとつの丸い食卓に座っている。中央には大きな皿
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く