auの日記

プログラミング初心者の日記。(auはハンドルネームです)

2018-07-01から1ヶ月間の記事一覧

printfで出力される文字や背景に色を付ける

auです。 デザイン系の授業のことを勉強していて、C言語でも色を付けることができるのではないかと調べてみました。 エスケープシーケンスを使うことで色の変更や、文字の強調などができます。 printf("\x1b[41m<RED>Hello\x1b[m\n"); // x1bは16進数のためx33と8</red>…

フォン・ノイマン・ボトルネックとは

auです。 今回はフォン・ノイマン・ボトルネックについて調べました。 フォン・ノイマン・ボトルネック フォン・ノイマン・ボトルネックとは、ノイマン型コンピュータの性能上のボトルネックである。 ノイマン型コンピュータは、命令を実行する際には必ずバ…

C言語のプログラムをアセンブリ言語で表示する

auです。 今回はC言語をアセンブリ言語にしてみてみました。 コンパイルする際に"gcc -S ファイル名.c"をする。これでファイル名.sというファイルができ、その中にアセンブリ語で書かれたファイルが完成します。 その際に最適化を適応することでコードを短く…

C言語のスレッド

auです。 今回はスレッドについて調べました。 スレッドとは スレッドとは、命令の実行を制御する単位のことです。スレッドライブラリを使って、プログラムをマルチスレッドにすることができます。マルチスレッドにすることで、並列処理をすることができるよ…

複合リテラルとは

auです。 今回は複合リテラルについて調べました。 複合リテラルとは 複合リテラルとは、配列や構造体の名前なしでオブジェクトを宣言するためのリテラルです。 #include <stdio.h> typedef struct { int id; char name[30]; } student_t; void print(student_t *p) {</stdio.h>…

C言語でマクロを使う

auです。 今回は"マクロ"について調べました。 マクロとは マクロとは、自分が定義した文字列を"置き換える"ことができる処理のことです。 defineを使って文字列の置き換えができます。他にも、if defineをつかって条件をつけたマクロを定義することもできま…

ステートメントとは

auです。 今回はステートメントの意味について調べてみました。 ステートメントとは ステートメントとは、プログラムが1つの命令を処理するための文のことです。 C言語であれば、最後に";"がつく文や、if文などの1つのブロックもステートメントです。 宣言ス…

割り込みハンドラとは

auです。 以前割り込みについて書きました。 今回はそれと関わりのある割り込みハンドラについて書きます。 割り込みハンドラとは 割り込みハンドラとは、割り込み処理を制御する機能のことです。ハンドルといえば、制御するためのものと想像がつきやすいで…

C言語のループでは同じアドレスが使われている

for

auです。 今回はC言語のfor文でメモリの振り分けはどうなってるのかと気になったので実際に調べてみました。 #include <stdio.h> int main(void) { int n = 0; for (int i = 0; i < 10; i++) { printf("i = %d &i = %p\n", i, &i); printf("n = %d &n = %p\n", n, &n)</stdio.h>…

リテラルとは

auです。 テスト前なので軽く書いていきます。 今回はリテラルについて調べました。 リテラルとは リテラルとは、ソースコード内で、直接データ型に値が代入された、変数や定数以外の値のことです。定数と呼ばれることもあるが定数は「初期化された値のまま…

C言語でvolatileを使う

auです。 前回は"const"について書きました。 program-shoshinsya.hatenablog.com 今回はvolatile(ボラタイル)について書きます。 volatileとは volatileとは、組み込みソフトウェアなどで使われる修飾子です。 volatileをオブジェクトを宣言する前に付け…

C言語のconstとは

auです。 前回は修飾子とはどんなものかを書きました。 program-shoshinsya.hatenablog.com データ型にくっつけて、効果を追加するというイメージです。 その中のconstについて調べてみました。 constとは constとは、変数の値を読み出し専用として宣言した…

型修飾子とは

auです。 今回は型修飾子について調べてみました。 型修飾子とは 型修飾子と聞いて、まず出てくるのがデータ型だと思います。int型、char型などあります。このデータ型を修飾するのが型修飾子です。何かそのままですね。 型修飾子には大きく分けて2つ習いま…

ポーリングとは

auです。 今回はポーリングについて調べてみました。 ポーリングとは ポーリングとは、複数の機器やプログラムに対して一定時間毎に要求を行い、要求条件を満たしていれば実行する処理方法のことです。 いつ起きるかわからないことを処理するのがこの方法で…

割り込み処理とは

auです。 今回は割り込み処理について調べました。 割り込み処理とは 割り込み処理とは、プログラムの処理の仕方の一つで、何かをするプログラムが動いている中でも、他のプログラムを動かしたいというのが割り込み処理です。 割り込みの要求は外部の機器(キ…

パイプライン処理とは

auです。 今回は命令パイプラインについて調べました。 命令パイプラインとは 命令パイプラインとは、逐次ソフトウェア(順序を追って処理するソフトウェア)の効率を上げるために、タスクを分割することです。 例えば、カレーを作る行程「具材を準備する」「…

LaTeXを使ってみた

auです。 大学の授業でLaTeXを使ってレポートを書きました。HTMLみたいに決まった文を入力すると「改行」や「段落」をつけることができて楽しいし意外と簡単にできました。数式を書くのがWordに比べてすごく楽だったと思います。 そして、昨日の転置行列を書…

C言語の転置

auです。 今回は課題で「転置」が出たので、どんなものなのかを調べてみました。 転置と調べたら、"転置行列"がでてきたのでそれについて書きます。 転置行列とは 例えば""とあったら、""と、値を入れ替えた際のn行m列行列のことです。 3行3列の場合は 上の…

仮想マシンとは

auです。 今回はよく聞く仮想マシンについて調べてみました。 仮想マシンとは 仮想マシンとは、1台のコンピュータで仮想化の技術の用い、複数のコンピュータを1台で動作させることです。 仮想化することで、余っているスペックを振り分けることができるので1…

gccの最適化オプション

auです。 今回はgccを使ってコンパイルする際に、最適化するオプションについて調べてみました。 最適化オプション 今回記述する最適化のオプションは"O1, O2, O3"です。それ以外は授業でまだ習っていないので見なかったことにします。 gcc -O1 ファイル名.c…

プログラムでのキャッシュとは

auです。 昨日のSRAMについて調べていたり、授業でよく「キャッシュ」という言葉を目にします。しかし、意味をよく分かっていないので調べてみました。 キャッシュとは キャッシュとは、CPU内や、CPUとメモリーの間にあり、一時的にメモリのデータをおいてお…

SRAMとは

auです。 今回はSRAMについて調べてみました。 SRAMとは SRAM(Static Random Access Memory)とは、読み込みと書き込みができるメモリです。 内部構造は順序回路になっているため、フリップフロップのように現在の入力だけでなく、過去に入力した情報も利用す…

クリティカルパスとは

auです。 今日はクリティカルパスについて調べてみました。 クリティカルパスとは クリティカルパスとは、 プロジェクトを実行する際に"遅延してしまうと全体に影響がでてしまうところがクリティカルパス"といいます。 プロジェクトを短くするためには、新し…

CPUにおけるCPIとは

CPI

auです。 今回はCPIについて調べてみました。 調べるといろいろなCPIと略される言葉があることを知りました。 今回調べるのはそのなかの"Cycles Per Instruction"です。 CPIとは CPUの処理速度を表す単位です。1命令を処理するのに必要な平均クロック数のこ…

CPUバウンドとは

auです。 今回はCPUバウンドという用語について調べてみました。 CPUバウンドとは 計算を行うプログラムを実行した際にはCPUが働きます。そのCPUを使って行うプログラムで、処理速度がCPUに制約されることを意味します。 CPUによってプログラムの処理が遅く…

C言語のscanf関数でスペースが入っている文字を出力する

auです。 今回はscanf関数でスペースの入った文字を出力してみます。 普通に書こうとすると以下のようになると思います。 #include <stdio.h> int main(void) { char c[30]; printf("Please write words\n"); scanf("%s", c); printf("c = %s\n", c); printf("Please </stdio.h>…

プログラムを書くときに気を付けていること

auです。 明日テストなので最近プログラミングをする際に気を付けていることでも書こうと思います。 1. i + 1など、空白をあけて見やすくする 間違いなども見つかりやすいし、みていて綺麗になる 2. 分からなくなったら誰かに説明をするように勉強する 自分…

MIPSとは

auです。 今回は"MIPS"について調べてみました。 MIPSとは MIPS(みっぷす)とは、Million Instructions Per Secondの略です。 CPUの処理性能のことで、1秒当たり100万回の命令実行回数を意味する言葉です。 分岐がほどんどない命令を実行させた際の性能を示す…

C言語のcontinue文の飛ぶ先

auです。 前回はbreak文の飛ぶ先について書きました。 今回はcotinue文の飛ぶ先について書きたいと思います。 continue文の飛ぶ先 cotinue文はfor文やwhile文のループの中でよく見かけます。continue文が処理されると、それ以下のループの内容は処理せずに、…

C言語のbreak文の飛ぶ先

auです。 今回はループなどの処理を終わりにする"break文"について書こうと思います。 break文の飛ぶ先 C言語を使っていて"break"を使う場合は今はまだ2つしか知りません。それは、「for文、while文のbreak」と「switch、case文のbreak」です。 実際にコード…