diff options
| -rw-r--r-- | input.stk | 3 | ||||
| -rw-r--r-- | main.py | 24 | 
2 files changed, 14 insertions, 13 deletions
| @@ -1,3 +1,2 @@ -Loops ten times asking for user input. If the input is 0 or nothing, print 69420, else print back the number from the input. -10 [ 0 1 , [ ~ . ! -- ] [ 69420 . ! ] -- ] +10 [ 0 1 read_number [ dup print_number newline pop -- ] [ 69420 print_number newline pop ] -- ] @@ -57,18 +57,13 @@ code.append('mov rdi, 1')  code.append('lea rsi, [int_buffer + rcx]')  code.append('mov rdx, rbx')  code.append('syscall') -code.append('mov [int_buffer], 10') -code.append('mov rax, 1') -code.append('mov rdi, 1') -code.append('mov rsi, int_buffer') -code.append('mov rdx, 1') -code.append('syscall')  code.append('mov rbx, [rsp - 8]')  code.append('ret')  code.append('start:')  loop_stack = []  loop_index = -1 +  with open('input.stk', 'r') as f:      text = f.read()      words = text.replace('\n', ' ').strip().split(' ') @@ -96,20 +91,27 @@ with open('input.stk', 'r') as f:          elif word == '*':              code.append('pop rax')              code.append('pop rdi') -            code.append('mul rdi') +            code.append('imul rdi')              code.append('push rax') -        elif word == '!': +        elif word == 'pop':              code.append('pop rax') -        elif word == '~': +        elif word == 'dup':              code.append('pop rax')              code.append('push rax')              code.append('push rax') -        elif word == '.': +        elif word == 'print_number':              code.append('call print')              code.append('pop rax') -        elif word == ',': +        elif word == 'read_number':              code.append('call read')              code.append('push rax') +        elif word == 'newline': +            code.append('mov [int_buffer], 10') +            code.append('mov rax, 1') +            code.append('mov rdi, 1') +            code.append('mov rsi, int_buffer') +            code.append('mov rdx, 1') +            code.append('syscall')          elif word == '[':              loop_index += 1              loop_stack.append(loop_index) | 
