23102009 music
たまに聴くにはよいのではなかろうか。ハウスっぽいテクノが多め。
昔なつかしの。
Le Voie, Le Soleil / Subliminal Cuts あたりが好き
と思ったらHed Kandiに入ってるのか。
23102009 music
たまに聴くにはよいのではなかろうか。ハウスっぽいテクノが多め。
昔なつかしの。
Le Voie, Le Soleil / Subliminal Cuts あたりが好き
と思ったらHed Kandiに入ってるのか。
23102009 SPIM
局所変数とはスタック上に確保されたものであり.globlで指定されるものとは異なる。
100までの総和を局所変数を使ってもとめる
int main()
{
print_int(sum(10));
print_string("\n");
return 0;
}
int sum(int n)
{
int s;
s = 0;
while(n>0){
s = s + n;
n = n - 1;
}
return s;
}
関数後ごとにスタックを設定してsum2で$v0に結果を書き込んで、mainの
move $a0, $v0
で返り値を受ける。
.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
18章終了
23102009 SPIM
.wordを連続して書くことで、連続したメモリアドレスに語が確保される
# int a[2] = {3, 2, 1};
.globl a
a: .word 3
.word 2
.word 1
12章まで読んだ。
23102009 macbook
U隊長が4年半使っていたソーテックのノートから、macbookに乗り換えることにした。
子育ての空いた一瞬の隙をついて、開けばすぐに復帰するmacは魅力的らしい。
22102009 sake
5x5のタイル状にしてみた。
好みの夕暮れの色があるように、好みのノイズ量があるに違いないので、もう少しノイズの入れ方を考えないと。
import base64,re,Image
from random import randint
def glitch(infile,outfile):
jpg_text = base64.encodestring(open(infile,"rb").read())
glitched_text = ""
count = 0
width,height = Image.open(infile).size
num = width * height / 10000
for c in jpg_text:
if c == '0':
if randint(0,num) == 0:
count += 1
glitched_text += str(randint(0,9))
else:
glitched_text += c
else:
glitched_text += c
glitched_jpg = base64.decodestring(glitched_text)
open(outfile,"wb").write(glitched_jpg)
return count
if __name__ == '__main__':
for i in range(25):
outfile = "test_%d.jpg" % i
count = glitch("/Users/kzfm/yuki3.jpg",outfile)
#print "%d: %d" % (i,count)
tiled_im = Image.new('RGB',(1600,1200))
tiled_px = tiled_im.load()
for i in range(5):
for j in range(5):
n = 5*i+j;
imgfile = "/Users/kzfm/python/test_%d.jpg" % n
im = Image.open(imgfile)
px = im.load()
for x in range(320):
for y in range(240):
nx = 320 * j + x
ny = 240 * i + y
tiled_px[nx,ny] = px[x,y]
tiled_im.show()
今日もグリッチ
import Image,sys
from random import randint
file = sys.argv[1]
im = Image.open(file)
width,height = im.size
interval = 0
for h in range(height):
if(interval == 0):
interval = randint(0,height-1)
rand_slide_x = randint(0,14)
rand_slide_y = randint(0,4)
slide_x = 0
slide_y = 0
else:
interval -= 1
slide_x += rand_slide_x
slide_y += rand_slide_y
for w in range(width):
current = (w,h)
new_h = h + slide_y
new_w = w + slide_x
if new_h >= height: new_h = h
if new_w >= width: new_w = w
src = (new_w,new_h)
im.putpixel(current,im.getpixel(src))
im.show()
im.save("glitch091021.jpg")
21102009 SPIM
グローバル変数の代入
.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
実行。printでメモリアドレスとか内容が表示されるので、runの前後で比較する。
$ 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)
九大医学部からちょっと離れたとこにある。
店内はちょっと豚骨臭い。
わんたんめんを注文。
麺は平打ちの細麺でわりと好みだが、スープはちょっと豚骨の匂い、、、慣れれば美味しいのかな。
そしたらベンジーあたしをグリッチで殴って
import base64,re
from random import randint
jpgfile = "/Users/kzfm/orig.jpg"
jpg_text = base64.encodestring(open(jpgfile,"rb").read())
glitched_text = ""
for c in jpg_text:
if c == '0':
glitched_text += str(randint(0,9))
else:
glitched_text += c
glitched_jpg = base64.decodestring(glitched_text)
open("glitched.jpg","wb").write(glitched_jpg)
Jpeg においては DCT を施すために如何なる入力画像も 8x8 画素のブロックに分割されるらしいのでbase64エンコーディングしたのをいじってデコードすると8x8のブロックの単位でノイズが混じるっていう理解でいいのか。
参考