<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"><channel><title>SPIM / Drkcore</title><link>http://blog.kzfmix.com/SPIM</link><description>Programming, Music, Snowboarding</description><language>ja</language><lastBuildDate>Sat, 24 Oct 2009 20:11:14 +0919</lastBuildDate><item><title>「Cとアセンブリ言語で学ぶ計算機プログラミングの基礎概念」読了</title><link>http://blog.kzfmix.com/entry/1256382658</link><description>&lt;p&gt;25章以降はちょっと読み物風味でアセンブリの話とかあんま出てこないのが残念。それ以前の内容から、なんとなくはイメージできるのでいいけど。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;第25章 動的メモリ割当て&lt;/li&gt;
&lt;li&gt;第26章 非局所的ジャンプ&lt;/li&gt;
&lt;li&gt;第27章 マルチスレッド&lt;/li&gt;
&lt;li&gt;第28章 スレッド同期&lt;/li&gt;
&lt;li&gt;第29章 例外&lt;/li&gt;
&lt;li&gt;第30章 割込み&lt;/li&gt;
&lt;li&gt;第31章 非ブロッキング並行データ構造&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;div class="awsxom"&gt;
&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4627848315/ref=nosim/kaerutyuuihou-22"&gt;
&lt;img src="http://ecx.images-amazon.com/images/I/51uPMTPXcHL._SL160_.jpg" align="left" hspace="5" border="0" alt="ProductName" class="image" /&gt;
&lt;strong&gt;Cとアセンブリ言語で学ぶ計算機プログラミングの基礎概念 - プログラムはプロセッサ上でどのように実行されるのか&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
角川 裕次 &lt;br /&gt;
森北出版 / ￥ 5,040 ()&lt;br /&gt;
在庫あり。&lt;br /&gt;
&lt;br clear="all" /&gt;
&lt;/div&gt;&lt;/p&gt;
</description><pubDate>Sat, 24 Oct 2009 20:11:14 +0919</pubDate><category>SPIM</category></item><item><title>アセンブリ言語での局所変数</title><link>http://blog.kzfmix.com/entry/1256299817</link><description>&lt;p&gt;局所変数とはスタック上に確保されたものであり.globlで指定されるものとは異なる。&lt;/p&gt;

&lt;p&gt;100までの総和を局所変数を使ってもとめる&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;int main()
{
  print_int(sum(10));
  print_string("\n");
  return 0;
}

int sum(int n)
{
  int s;
  s = 0;
  while(n&amp;gt;0){
    s = s + n;
    n = n - 1;
  }
  return s;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;関数後ごとにスタックを設定して&lt;em&gt;sum&lt;/em&gt;2で$v0に結果を書き込んで、mainの&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;move $a0, $v0
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;で返り値を受ける。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;        .data

_s1:    .asciiz "\n"

        .text
        .globl main
main:
        addiu $sp, $sp, -24
    sw    $ra, 20($sp)
    sw    $fp, 16($sp)
    move  $fp, $sp

    li    $a0, 100
    jal   sum
    move  $a0, $v0
    li    $v0, 1
    syscall

    la    $a0, _s1
    li    $v0, 4
    syscall

    li    $v0, 0
    move  $sp, $fp
    lw    $ra, 20($sp)
    lw    $fp, 16($sp)
    addiu $sp, $sp, 24
    jr    $ra

sum:
    addiu $sp, $sp, -12
    sw    $ra, 8($sp)
    sw    $fp, 4($sp)
    move  $fp, $sp

    sw    $zero, 0($fp)

_sum_1:
    slt   $t0, $zero, $a0
    beq   $t0, $zero, _sum_2

    lw    $t1, 0($fp)
    add   $t1, $t1, $a0
    sw    $t1, 0($fp)

    addi  $a0, $a0, -1

    b     _sum_1

_sum_2:
    lw    $v0, 0($fp)
    move  $sp, $fp
    lw    $ra, 8($sp)
    lw    $fp, 4($sp)
    addiu $sp, $sp, 12
    jr    $ra
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;div class="awsxom"&gt;
&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4627848315/ref=nosim/kaerutyuuihou-22"&gt;
&lt;img src="http://ecx.images-amazon.com/images/I/51uPMTPXcHL._SL160_.jpg" align="left" hspace="5" border="0" alt="ProductName" class="image" /&gt;
&lt;strong&gt;Cとアセンブリ言語で学ぶ計算機プログラミングの基礎概念 - プログラムはプロセッサ上でどのように実行されるのか&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
角川 裕次 &lt;br /&gt;
森北出版 / ￥ 5,040 ()&lt;br /&gt;
在庫あり。&lt;br /&gt;
&lt;br clear="all" /&gt;
&lt;/div&gt;&lt;/p&gt;

&lt;p&gt;18章終了&lt;/p&gt;
</description><pubDate>Fri, 23 Oct 2009 21:40:08 +0919</pubDate><category>SPIM</category></item><item><title>アセンブリ言語での配列</title><link>http://blog.kzfmix.com/entry/1256129722</link><description>&lt;p&gt;.wordを連続して書くことで、連続したメモリアドレスに語が確保される&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# int a[2] = {3, 2, 1};
    .globl    a
a:  .word     3
    .word     2
    .word     1
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;div class="awsxom"&gt;
&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4627848315/ref=nosim/kaerutyuuihou-22"&gt;
&lt;img src="http://ecx.images-amazon.com/images/I/51uPMTPXcHL._SL160_.jpg" align="left" hspace="5" border="0" alt="ProductName" class="image" /&gt;
&lt;strong&gt;Cとアセンブリ言語で学ぶ計算機プログラミングの基礎概念 - プログラムはプロセッサ上でどのように実行されるのか&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
角川 裕次 &lt;br /&gt;
森北出版 / ￥ 5,040 ()&lt;br /&gt;
在庫あり。&lt;br /&gt;
&lt;br clear="all" /&gt;
&lt;/div&gt;&lt;/p&gt;

&lt;p&gt;12章まで読んだ。&lt;/p&gt;
</description><pubDate>Fri, 23 Oct 2009 21:10:36 +0919</pubDate><category>SPIM</category></item><item><title>spim</title><link>http://blog.kzfmix.com/entry/1256079607</link><description>&lt;p&gt;グローバル変数の代入&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;    .data

    .globl src
src: .word 2001

    .globl dst
dst: .word 0

    .text
    .globl main
main:
    la $t0, src
    lw $s0, 0($t0)
    la $t1, dst
    sw $s0, 0($t1)
    li $v0, 0
    jr $ra
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;実行。printでメモリアドレスとか内容が表示されるので、runの前後で比較する。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ spim
SPIM Version 7.4 of January 1, 2009
Copyright 1990-2004 by James R. Larus (larus@cs.wisc.edu).
All Rights Reserved.
See the file README for a full copyright notice.
Loaded: /opt/local/share/spim/exceptions.s
(spim) load "ls.as"
(spim) print dst
Data seg @ 0x10010004 (268500996) = 0x00000000 (0)
(spim) print src
Data seg @ 0x10010000 (268500992) = 0x000007d1 (2001)
(spim) run
(spim) print dst
Data seg @ 0x10010004 (268500996) = 0x000007d1 (2001)
(spim) print src
Data seg @ 0x10010000 (268500992) = 0x000007d1 (2001)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;div class="awsxom"&gt;
&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4627848315/ref=nosim/kaerutyuuihou-22"&gt;
&lt;img src="http://ecx.images-amazon.com/images/I/51uPMTPXcHL._SL160_.jpg" align="left" hspace="5" border="0" alt="ProductName" class="image" /&gt;
&lt;strong&gt;Cとアセンブリ言語で学ぶ計算機プログラミングの基礎概念 - プログラムはプロセッサ上でどのように実行されるのか&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
角川 裕次 &lt;br /&gt;
森北出版 / ￥ 5,040 ()&lt;br /&gt;
在庫あり。&lt;br /&gt;
&lt;br clear="all" /&gt;
&lt;/div&gt;&lt;/p&gt;
</description><pubDate>Wed, 21 Oct 2009 08:00:32 +0919</pubDate><category>SPIM</category></item><item><title>MIPS32エミュレータ</title><link>http://blog.kzfmix.com/entry/1255874562</link><description>&lt;p&gt;SPIM&lt;/p&gt;

&lt;p&gt;macだと&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;sudo port install spim
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;でOK。&lt;/p&gt;

&lt;p&gt;早速のhello world&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;      .data
msg:  .asciiz "Hello world.\n"

      .text
      .globl main

main:
      li   $v0, 4
      la   $a0,msg
      syscall
      jr   $ra
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;div class="awsxom"&gt;
&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4627848315/ref=nosim/kaerutyuuihou-22"&gt;
&lt;img src="http://ecx.images-amazon.com/images/I/51uPMTPXcHL._SL160_.jpg" align="left" hspace="5" border="0" alt="ProductName" class="image" /&gt;
&lt;strong&gt;Cとアセンブリ言語で学ぶ計算機プログラミングの基礎概念 - プログラムはプロセッサ上でどのように実行されるのか&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
角川 裕次 &lt;br /&gt;
森北出版 / ￥ 5,040 ()&lt;br /&gt;
在庫あり。&lt;br /&gt;
&lt;br clear="all" /&gt;
&lt;/div&gt;&lt;/p&gt;

&lt;p&gt;後半にスレッドとかノンブロッキングの話が出てくるらしいので楽しみ&lt;/p&gt;
</description><pubDate>Sun, 18 Oct 2009 23:03:55 +0919</pubDate><category>SPIM</category></item></channel></rss>