mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			42 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| (module
 | |
|   (import "env" "printInt" (func $printInt (param i32)))
 | |
|   (import "env" "print" (func $print (param i32 i32)))
 | |
| 
 | |
|   (memory $memory 1)
 | |
|   (data (i32.const 0) "\n")
 | |
|   (data (i32.const 1) " ")
 | |
| 
 | |
|   (func $endl
 | |
|     (call $print (i32.const 0) (i32.const 1)))
 | |
|   (func $space
 | |
|     (call $print (i32.const 1) (i32.const 1)))
 | |
| 
 | |
|   (func $fibonacci_rec (param $a i32) (param $b i32) (param $n i32) (result i32)
 | |
|     (if (i32.eqz (get_local $n)) (return (get_local $a)))
 | |
|     (call $printInt (get_local $b))
 | |
|     (call $space)
 | |
|     (set_local $a (i32.add (get_local $a) (get_local $b)))
 | |
|     (call $fibonacci_rec (get_local $b) (get_local $a) (i32.sub (get_local $n) (i32.const 1)))
 | |
|   )
 | |
| 
 | |
|   (func $fibonacci_iter (param $a i32) (param $b i32) (param $n i32) (result i32)
 | |
|     (loop $fi
 | |
|       (if (i32.eqz (get_local $n)) (return (get_local $a)))
 | |
|       (call $printInt (get_local $b))
 | |
|       (call $space)
 | |
|       (set_local $b (i32.add (get_local $a) (get_local $b)))
 | |
|       (set_local $a (i32.sub (get_local $b) (get_local $a)))
 | |
|       (set_local $n (i32.sub (get_local $n) (i32.const 1)))
 | |
|       (br $fi))
 | |
|     (get_local $b))
 | |
| 
 | |
|   (func $main
 | |
|     (drop (call $fibonacci_rec (i32.const 0) (i32.const 1) (i32.const 9)))
 | |
|     (call $endl)
 | |
|     (drop (call $fibonacci_iter (i32.const 0) (i32.const 1) (i32.const 9))))
 | |
| 
 | |
|   (export "main" (func $main))
 | |
|   (export "memory" (memory $memory))
 | |
| )
 | |
| 
 |