List

20 views
Skip to first unread message

燕南

unread,
Apr 25, 2019, 5:07:02 AM4/25/19
to 符式協會

\ List

: List ( size -<name>- ) 
create 
dup
4 +
here 
swap
allocate
if 
drop 0 
then
dup rot ! \ 紀錄 List空間位置
dup >R ! \ List第一個空間位置放 List_size
0 r> 4 + ! 
does>
;


: List.free ( List_adr -- )
@ free
if
." free failed! "
else
." free ok!"
then
;

: >List ( n List_adr -- ) 
@ 4 + >r 
r@ @ 1 + r@ !
r@ 4 +
r> @ 1 - 4 * + ! 
;

: List@ ( n List_adr -- m ) 
@ 4 + >r 
1 - 4 * 
r> 4 +
+

;

: List> ( List_adr -- n ) 
@ 4 + >r

r@ 4 +
r@ @ 1 - 4 * + @ \

r@ @ 1 - r> ! 
;


1024 List List_name 
\ ((
1 List_name >List
2 List_name >List
3 List_name >List
4 List_name >List
\ ))
List_name @ 100 dump cr
1 List_name List@ . cr
2 List_name List@ . cr 
3 List_name List@ . cr
4 List_name List@ . cr

List_name List> . cr
List_name List> . cr
List_name List> . cr
List_name List> . cr

cr List_name List.free

FLOAD 'D:\Forth\Libary\資料結構\List\List.f' 
768ACB8 | 00 04 00 00 04 00 00 00 01 00 00 00 02 00 00 00 |................|
768ACC8 | 03 00 00 00 04 00 00 00 F8 CD 7C 07 0C 00 00 00 |........雥|.....|
768ACD8 | B0 2D 04 01 0C 00 00 00 B0 D1 7C 07 0C 00 00 00 |?......參|.....|
768ACE8 | 58 D4 7C 07 0C 00 00 00 38 D2 7C 07 0C 00 00 00 |X唰.....8烡.....|
768ACF8 | C0 22 7B 07 0C 00 00 00 98 C7 7C 07 0C 00 00 00 |?{.....|.....|
768AD08 | 00 00 00 00 00 00 00 00 2D 00 01 2C F0 79 10 08 |........-..,羳..|
768AD18 | 00 00 00 00 |....|









free ok! ok


燕南

unread,
Apr 25, 2019, 9:32:10 PM4/25/19
to 符式協會
: List! ( m n List_adr --  ) 
  @ 4 + >r 
  1 - 4 * 
  r> 4 +
  +
  ! 
  ;
  
: List.depth ( List_adr -- depth )  
  @ 4 + @ .
  ;

燕南於 2019年4月25日星期四 UTC+8下午5時07分02秒寫道:
Reply all
Reply to author
Forward
0 new messages