Similar documents
橡Taro9-生徒の活動.PDF

●70974_100_AC009160_KAPヘ<3099>ーシス自動車約款(11.10).indb

改訂版 :基本的な文字化の原則(Basic Transcription System for Japanese: BTSJ)

Lecture on

REALV5_A4…p_Ł\1_4A_OCF

untitled

「都市から地方への人材誘致・移住促進に関する調査」

<91498EE88CA D815B2E786C73>

〔 大 会 役 員 〕

橡本体資料+参考条文.PDF

MQTT V3.1 プロトコル仕様


mnal_HDR4ex_5ex.pdf

橡点検記録(集約).PDF


2

TOKYO Bay CAR FERRY


›¼’à”v“lŠÍ1−ª

特別プログラム

8 浜根知恵(p191‐203)204白/p191‐203

★表紙-背幅5.5mm/表紙

SBI損保の自動車保険 重要事項説明書



2

_ZEI-1022_fiÁŁÊ−é›æ-’‘Ä


1 鵜澤幸弘(p7‐26)/性同一障害 p7‐26

広報あつぎ-1月15日号-1面12.indd

untitled

本文/A6180A

150220_通し


60周年記念 記念誌/扉・扉裏・中扉・資料扉・名簿扉

本文/YAY180B


研究紀要 第22号 (分割版 その7)



本文(縦)/YAZ149T

表紙(背幅8.5mm)/背幅8.5mm

A4_元

S \1.E4

学内広報 No.1224

untitled

パズルをSugar制約ソルバーで解く

. 61 5,000 5, ,


セゾン保険_PDF用.indd

untitled

() / (front end) (back end) (phase) (pass) 1 2

2


HRBusinessReview_vol5

all

untitled

橡07第1章1_H160203_.PDF

ACCESS入門編


2

(CC Attribution) Lisp 2.1 (Gauche )



SP100 取扱説明書

2

r07.dvi

r1.dvi

卒論 提出用ファイル.doc

ohp07.dvi

いぬごやフリー

No.28


38

項 目

B5‘·¢‡Ì…X…X…†PDFŠp

JPROM-PRINT

Microsoft Word - ‰IŠv⁄T†`⁄V87†`97.doc

untitled



FREE

fp.gby

N88 BASIC 0.3 C: My Documents 0.6: 0.3: (R) (G) : enterreturn : (F) BA- SIC.bas 0.8: (V) 0.9: 0.5:

( ) ( ) lex LL(1) LL(1)


untitled

6-1

1 8 Z80 Z GBA ASIC 2 WINDOWS C 1

main.dvi

r3.dvi



好きですまえばし

Common Lisp :

Parametric Polymorphism


ジェネリック医薬品販売会社(田辺製薬販売株式会社)の設立に伴う包装変更のご案内

06地図目録.pwd

橡82-93協力員原稿>授業

Transcription:

1 NScripter 1 [ NScripter ] NScripter NScripter 2 nathki bugyo 1 http://www.shuwasystem.co.jp/cgi-bin/detail.cgi?isbn=4-7980-1104-5 2 http://www.pulltop.com/gp04/

2 NScripter NScripter BASIC ( ) NScLisper NScLisper NScripter Lisp NScripter Lisp S GC(Garbage Collection) NScripter NScripter Lisp NScripter NScripter Lisp 3 NScripter Lisp Lisp (?) 3 ( )

3 1 NScripter NScripter 1.1 NScripter 1 2 1.2 %n n 0 n 4095 n %0 %123 32bit 3 mov 1 2 3

4 1 NScripter mov %0, 2500 mov %1, %0 0 2500 1 %0 (=2500) NScripter C %%m m 0 m 4095 %m 0 %m 4095 %m m % mov %0, 10 mov %%0, 777 0 10 %0(=10) 777 10 777 1.3 NScripter 1.4 $n n 0 n 4095 n

1.5. 5 $0 $123 mov mov $0, "hoge" mov $1, $0 mov %0, 10 mov $%0, "foo" 1.5 numalias var_name, 0 %0 $0 %var name $var name mov %0, var name 1.6 NScripter

6 1 NScripter 1.6.1 mov %0, 1 goto *foo mov %0, 2 *foo %0 1 1.6.2 mov %0, 1 gosub *foo mov %0, 3 goto *baa *foo mov %0, 2 return *baa %0 3 gosub return 1.7

1.7. 7 *increase inc %arg0 mov %ret, %arg0 return ;1 1 ; *addition add %arg0, %arg1 mov %ret, %arg0 return ;1 2 ;

8 2 Lisp NScripter 4096 NScLisper 0 49 50 99 100 2999 Lisp 3000 4000 4001 4095 2.1 0 49 Lisp 2.2 50 99 Lisp (nil #t #f )

2.3. Lisp 9 2.3 Lisp 100 2999 Lisp (Lisp ) 2900 GC 2.4 3000 4000 2.5 4001 4095 4095 ( )

10 3 3.1 Push Push *push if %sp >= STACK_OVER /* */ mov %%sp, %arg0 inc %sp return sp STACK OVER (4001) Push arg0 NScripter ; /**/ /**/ Push arg0 push mov %arg0, 100 gosub *push ; 100 3.2 Pop Pop

3.3. 11 *pop if %sp <= STACK /* */ dec %sp mov %ret, %%sp return STACK (3000) Pop ret Push Pop ret Pop gosub *pop /* ret */ 3.3

12 3 ;; arg0 *factorial ;" " 0 1 if %arg0 == 0 mov %ret, 1 : return gosub *push ; " " dec %arg0 ;" " 1 arg0 gosub *factorial ; mov %arg0, %ret ; arg0 gosub *pop ; " " ret mul %ret, %arg0 ;ret arg0 return ;ret mov %arg0, 10 ; 10 gosub *factorial ; factorial ;; %ret 10! = 3628800 NScripter 200 1 200 NScripter 2 1 NScripter 2 NScLisper Lisp

13 4 Lisp NScLisper (=32bit) (Lisp ) 1bit GC 2 6bit ( ) 1 4.1: 4.1 1bit GC 2 6bit 7 19bit CAR ( ) 19 32bit CDR ( ) 1 numalias

14 4 Lisp 4.2 1bit GC 2 6bit 7 32bit 4.3 1bit GC 2 6bit 2 7 32bit 2 ( )

15 5 getter setter ( ) 5.1 getter GC / / and NScripter

16 5 getter setter ;; arg0 *get_gc mov %ret, %%arg0 mod %ret, 2 return *get_tag mov %tmp, %%arg0 mod %tmp, 64 mov %ret, %tmp div %ret, 2 return *get_data mov %ret, %%arg0 div %ret, 64 return ( ) arg0 5.2 setter GC / / or

5.3. 17 ;; ;;arg0 ;;arg1 *set_gc mov %tmp, %%arg0 div %tmp, 2 mul %tmp, 2 mov %%arg0, %tmp + %arg1 return *set_tag mov %tmp, %%arg0 mov %tmp1, %tmp div %tmp1, 64 mul %tmp1, 64 ;DATA mod %tmp, 2 ;GC mov %tmp2, %arg1 mul %tmp2, 2 ;TAG mov %%arg0, %tmp + %tmp1 + %tmp2 return *set_data mov %tmp, %%arg0 mod %tmp, 64 mov %tmp1, %arg1 mul %tmp1, 64 mov %%arg0, %tmp + %tmp1 return getter arg0 arg1 5.3 1

18 5 getter setter ( ) GC GC ( )

19 6 NScLisper 1 2900 Garbage Collection 2 Lisp Mark and Sweep GC 6.1 1. (MEM=100) 2. MEM(100) MEM END(2999) TAG FREE ( ) 1 (+ 1 1) 2 2 Lisp

20 6 mov %free_lst, MEM for %i=mem to MEM_END mov %arg0, %i mov %arg1, TAG_FREE gosub *set_tag mov %arg1, %i + 1 gosub *set_data next 6.2 1. (= ) 2. 3. 6.1:

6.3. Garbage Collection 21 *next_cell ;; GC if %free_lst == MEM_OVER gosub *gc if %free_lst == MEM_OVER /* */ mov %arg0, %free_lst gosub *get_data mov %tmp, %free_lst mov %free_lst, %ret mov %ret, %tmp return MEM OVER(3001) GC 6.3 Garbage Collection Garbage Collection 1. 2. 1 3. ( ) 1 4. 0 5. MEM OVER 6.3.1 1 1

22 6 100 2999 3 1 4 *gc_mark for %i = STACK to %sp-1 ; if %%i < MEM goto *gc_mark_l1 if %%i > MEM_END goto *gc_mark_l1 mov %arg0, %%i ; 1 ( ) gosub *gc_mark_lobject *gc_mark_l1 next return 6.3.2 0 0 MEM OVER(3001) 3 ( ) 4 GC

6.3. Garbage Collection 23 6.2: *gc_sweep mov %free_lst, MEM_OVER ; for %i=mem to MEM_END mov %arg0, %i gosub *get_gc if %ret == 0 mov %free_lst, %i : break mov %arg1, 0 gosub *set_gc next if %free_lst == MEM_OVER return ; mov %gc_tmp, %free_lst ; for %i=%i+1 to MEM_END mov %arg0, %i gosub *get_gc ; if %ret == 0 mov %arg0, %gc_tmp : mov %arg1, %i if %ret == 0 gosub *reuse_cell : mov %gc_tmp, %i ; 0 mov %arg0, %i mov %arg1, 0 gosub *set_gc next mov %arg0, %gc_tmp mov %arg1, MEM_OVER ; gosub *reuse_cell return *reuse_cell gosub *set_data mov %arg1, TAG_FREE gosub *set_tag return

24 Lisp Lisp 07/01/11 NScripter Lisp 07/01/16 07/01/18 Lisp 1 07/01/20 Festival2 07/02/02 07/02/03 07/02/04 zick 07/03/02 zick 07/03/14 zick 07/03/29 07/03/31 / 07/04/01 07/04/07 CD 07/04/08 Festival2

25 NScLisper Yes No CLANNAD Yes 0 1 Yes 2 4 Yes 5 6

26 Festival2 Lisp Lisp Lisp Lisp ( ) Lisp Lisp 2007 5 2 zick

27 [ NScripter ] NScripter