> For the complete documentation index, see [llms.txt](https://trizen.gitbook.io/sidef-lang/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://trizen.gitbook.io/sidef-lang/programming_tasks/s/subleq.md).

# Subleq

```ruby
var memory = ARGV.map{.to_i}
var ip = 0
 
while (ip.ge(0) && ip.lt(memory.len)) {
    var (a, b, c) = memory[ip, ip+1, ip+2]
    ip += 3
    if (a < 0) {
        memory[b] = STDIN.getc.ord
    }
    elsif (b < 0) {
        print memory[a].chr
    }
    elsif ((memory[b] -= memory[a]) <= 0) {
        ip = c
    }
}
```

#### Output:

```
$ sidef subleq.sf 15 17 -1 17 -1 -1 16 1 -1 16 3 -1 15 15 0 0 -1 72 101 108 108 111 44 32 119 111 114 108 100 33 10 0
Hello, world!
```
