アセンブリ言語で手続きを使う

SPIMは日本語でコメントしてあるとフリーズした。

 .text
    .globl main
main:   
    li $a0, 0 #引数レジスタに引数を格納
    li $a1, 3
    li $a2, 2
    li $a3, 4
    jal leaf_example #手続きに制御を移す。$raに次の命令のアドレスを格納する。
    add $a0, $v0, $zero
    li $v0, 1
    syscall #結果をコンソールに出力する。
    jr $ra

leaf_example:
    addi  $sp, $sp, -12 #手続内で使用するレジスタをスタックに退避する。
    sw $t0, 8($sp)
    sw $t1, 4($sp)
    sw $s0, 0($sp)  

    add $t0, $a0, $a1 #($a0 + $a1) - ($a2 + $a3)を計算する。
    add $t1, $a2, $a3
    sub $s0, $t0, $t1

    add $v0, $s0, $zero #結果を値レジスタに格納する。

    lw $s0, 0($sp) #退避したレジスタを元に戻す。
    lw $t1, 4($sp)
    lw $t0, 8($sp)

    jr $ra #制御を呼び出し元に戻す。

C言語で書くとこんな感じ

#include <stdio.h>
int leaf_example(int g, int h, int i, int j)
{
    int f;
    f = (g + h) - (i + j);
    return f;
}

int main(int argc, char *args[])
{
    int g = 0;
    int h = 3;
    int i = 2;
    int j = 4;
    int a;
    a = leaf_example(g, h, i, j);
    printf("%d", a);
}

パターソン&ヘネシー本の2章8節あたりを参照

将棋を始めた

将棋を始めたと言っても院試が終わってからなので去年の9月頃からである。 小学生の頃にも少しやっていたのだが本格的に将棋に入れ込んだのは初めてだ。 ぴよ将棋や将皇で鍛えてから将棋倶楽部24デビューをしたが7連敗ぐらいしてレーティングが400から50ぐらいまで下がった。 その後、定跡を覚えるなどして現在は400から500ぐらいになった。 これからどれほど強くなれるのだろうか?

SPIMで遊んでみる

アセンブリ言語でのHello World

 .data
str:
    .asciiz "Hello World"
    .text
    .globl main
main:
    li  $v0, 4
    la  $a0, str
    syscall
    jr $ra

.data, .text, .asciizなどはMIPSアセンブラ指令

.dataは後続の項目をデータセグメントに、.textはテキストセグメントに格納する。

.asciizは"Hello World"を主記憶に格納する。strには先頭の文字「H」のアドレスがあてられる。

str:, main:はラベル、そのあとの命令のアドレスにアセンブラが変換してくれる?シンボルとも言う?

例えばjal mainjal 0x004004cみたいな感じに

SPIMではコンソールに出力するには$v0に4、$a0に文字列のアドレスを入れてsyscallでできる。

最後にjr $raでmain関数から抜ける。

liは疑似命令。li $v0,4ori $2, $0, 4となる(ゼロレジスタとの論理和で$2に4が代入される仕組み) laはアドレスを代入する疑似命令。

今日勉強したこと

今日勉強して理解したことについてまとめてみる

マセマのフーリエ解析 フーリエ変換を1節読んだ。

フーリエ級数フーリエ係数は周期2Lの関数を三角関数の和として表現したものだがフーリエ変換フーリエ逆変換はL→∞としたもので非周期関数に使える。 フーリエ変換フーリエ係数にあたり、フーリエ逆変換はフーリエ級数にあたる

フーリエ変換フーリエ逆変換をする式

$ \displaystyle f(x) = \frac{1}{2\pi}\int_{-\infty}^{\infty}e^{i\alpha x} \{ \int^{\infty}_{-\infty} f(t)e^{-i\alpha t}dt\} d\alpha $

フーリエ変換の2節目を読もうとしたけど理解できなくなったので読み飛ばしてたフーリエ級数(Ⅱ)をもう一回ちゃんと読み始めた。

リーマンルベーグの補助定理からフーリエの定理の証明

正規直行関数形とパーシヴァルの等式

電源の内部抵抗について

院試の志望理由書がなかなか書けない。 もうすぐ出願なのに第一志望の研究室にすらまだ見学に行ってない大学がある。 最近、理工系の本をよく読むので、書評でも書こうかと思う。 最近はてな匿名ダイアリーが意外に面白いことに気づいた。増田と略すらしい。 でも、ここに書いてることは別に反応が欲しいことでもないのでここに書いたままでいいと思う。 安倍政権の支持率が急落しているようだ。今更不支持に回るひと、未だに支持のひとどちらも自分には理解しがたい。

受験勉強をしていると本が読みたくなる?

前回の投稿から大分時間がたってしまったがこのままブログを放置するのも良くないと思ったし、いろいろ考えることがあったので久しぶりに記事を書いてみようと思う。

そもそも、何故ここまで3ヶ月近く更新しなかった(or できなかったか)というと、他大の大学院に進学するために勉強していたからである。 一般的に大学院は8月ごろに入学試験を行い、内部進学の人は1,2ヶ月前ぐらい、外部の人はさらに1,2ヶ月ぐらい前から勉強し始めるようだが(ネットで得た情報をもとに推測した)、自分の場合は1月の大学の試験期間が終わってから、勉強を始めた。 これほど早めに勉強を始めたのは専攻が全く異なるからである。生命系から情報系に移るのだ。自分の大学では生命系というのは理系の中でも特殊であると感じている。学校では情報系やその他、理学・工学部の人たちが微分積分線形代数を1年次に学ぶ中、数学は統計的手法の道具として少し扱われるだけでほとんど教育が行われていない。その間、専門科目ではDNAやタンパク質といった分子生物学などを勉強し、学生実験があり、外国語を学ぶ。その後、生命系では植物・動物・微生物など興味に応じて専門科目を選んで履修していく。つまり、大学教育において生命系と情報系では基礎としている学問が全く違うのである。もちろん、中には数学を基礎科目としている生命系の学部・学科もあるだろうが少なくとも自分の所属している学科では違うのだ。このことの是非については大いに議論の余地があると考えているが、ここで言いたいのは去年の自分が情報系の大学院に進むのは高校生または浪人生が大学受験を前にして理転するぐらい大変なことだということだ。 何故、情報系に専攻を変えようとしたかなどの理由は後でまとめてみようと思う。とにかく今は切羽詰まっているし、必死に勉強している。 これで、ブログ更新を放置していた理由は書いた。

院試の受験勉強とは孤独なもので、そのせいなのか勉強の合間によく考え事をする。その内容は哲学的なことが多いように思う。哲学的だといってもそんな小難しいことではなく、「自分はどうして今のような性格になったのだろうか?」や、「これからの人生どのように生きていけばいいのか?」、「中高生のとき○○をしてればよかった。いや、今そんなこと考えたって無駄だ!」といったことだ。大学1,2年の頃はそのようなことはあまり考えていなかったが、進学や就職といった進路の分かれ目に近づいてきたこともその原因にあるように思う。 最近ではそのような思慮がさらに進んで「どうしたら、これらの疑問に答えを見つけられるだろうか?」と考えるようになった。そこで自分なりに出した答えは「本を読めばいいんじゃないか」ということだ。自分のように悶々と考え事をしていた人(それも頭のいい人)がどのように答えを出したのか知りたいのだ。ここ数年読んだ本はたまに小説を読むぐらいでほとんどが専門書や教科書だった。読書体力はあまりないが、人生の疑問対する答えを探すため本を読もうと思う。

この文章を書くのに1時間近くかかってしまった。貴重な勉強時間を犠牲にすることで、自分の文章力の低さを再確認できた。当分、技術系の記事は書けないだろう。最近アクセス数が増えてきているが。

オリジナリティについて

いろいろあって久しぶりのブログ更新になりましたが、今回のエントリーはいつもと違った内容にしたいと思います。

僕がはてなブログを始めたのが去年の10月なので現時点で約4か月間続けていることになります。

ありがたいことにページビューも増えてきました。

ここでページビュー数上位のページを紹介したいと思います。

CentOS6.8にChromeを入れようとしたらgccをビルドすることになった - k's diary

  • 5位

TeXで数式をはてなブログに表示して、Atomでプレビュー - k's diary

順位の横の数字がページビュー数でカッコ内が割合です。

ちなみにGoogle Analyticsを使って調べた数字です。

次にGoogle Search Consoleで調べた検索クエリの解析結果です。 f:id:beback:20170221123414p:plain

やっぱり検索サイトで上位に表示されるとページビュー数が増える傾向にあるようです。

1位のページは忘備録的に書いただけで僕自身はEclipseをあまり使いこなせていないのでこんなページを参考にしちゃっていいのかなって感じです。

このブログ全体にいえるこでもありますが、1・2・5位はググって調べたことを自分向けにまとめています。

3位はトラブル解決につながった人はいるのでしょうか?ほとんどいないと思うのですが…

今までも考えていたことではありますが、この結果を見て感じたことはもっとオリジナリティのあるコンテンツを提供したいということです。

一応このブログは日記という形でやっているつもりなので検索エンジンから飛んできた人が多いというのも悪くない傾向だとは思います。

ですが、現時点でこのブログの内容は他のサイトでも見つかる内容ばかりです。そう考えるとオリジナリティがないと言えると思います。

最近のWebは中身の無いサイトやコピペサイトがたくさんありうんざりしているのですが、その一部にはならないようにしたいです。

久しぶりに文章を書いたら疲れました。作文能力がかなり低下しているようです。