<p><span class="h-card" translate="no"><a href="https://discuss.systems/@dev" class="u-url mention">@<span>dev</span></a></span> day1 part1:</p><p>.text<br />.globl _main<br />.p2align 6<br />_main:<br /> stp fp, lr, [sp, #-16]!<br /> mov fp, sp</p><p> ldr x0, [x1, #8]<br /> adr x1, read<br /> bl _fopen<br /> <br /> sub sp, sp, <a href="https://discuss.systems/tags/0x30" class="mention hashtag" rel="tag">#<span>0x30</span></a><br /> stp x20, x21, [sp, <a href="https://discuss.systems/tags/0x20" class="mention hashtag" rel="tag">#<span>0x20</span></a>]<br /> stp x22, x23, [sp, <a href="https://discuss.systems/tags/0x10" class="mention hashtag" rel="tag">#<span>0x10</span></a>]<br /> mov x20, x0<br /> eor x21, x21, x21<br /> mov x22, #-1<br /> mov x23, #10</p><p>bufferEmpty:<br /> mov x0, sp<br /> mov x1, #1<br /> mov x2, #16<br /> mov x3, x20<br /> bl _fread<br /> cbz x0, eof<br /> eor x1, x1, x1</p><p>peek:<br /> ldrb w2, [sp, x1]<br /> cmp w2, #10 // \n<br /> b.eq endOfLine</p><p> sub w2, w2, <a href="https://discuss.systems/tags/0x30" class="mention hashtag" rel="tag">#<span>0x30</span></a><br /> cmp w2, #10<br /> b.lo digit</p><p>advance:<br /> add x1, x1, #1<br /> cmp x1, x0<br /> b.ne peek</p><p> cmp x0, #16<br /> b.eq bufferEmpty</p><p>eof:<br /> mov x0, x20<br /> bl _fclose</p><p> str x21, [sp]<br /> adr x0, format<br /> bl _printf</p><p> ldp x22, x23, [sp, <a href="https://discuss.systems/tags/0x10" class="mention hashtag" rel="tag">#<span>0x10</span></a>]<br /> ldp x20, x21, [sp, <a href="https://discuss.systems/tags/0x20" class="mention hashtag" rel="tag">#<span>0x20</span></a>]<br /> mov sp, fp<br /> ldp fp, lr, [sp], #16<br /> eor x0, x0, x0<br /> ret</p><p>endOfLine:<br /> add x21, x21, x22<br /> mov x22, #-1<br /> b advance</p><p>digit:<br /> cmp x22, #-1<br /> b.gt 1f<br /> madd x21, x2, x23, x21<br />1:mov x22, x2<br /> b advance<br /> <br />read: .asciz "r"<br />format: .asciz "%zd\n"</p>