aboutsummaryrefslogtreecommitdiff
path: root/lab2_bomblab/phase2.s
diff options
context:
space:
mode:
Diffstat (limited to 'lab2_bomblab/phase2.s')
-rw-r--r--lab2_bomblab/phase2.s27
1 files changed, 27 insertions, 0 deletions
diff --git a/lab2_bomblab/phase2.s b/lab2_bomblab/phase2.s
new file mode 100644
index 0000000..23a6ec7
--- /dev/null
+++ b/lab2_bomblab/phase2.s
@@ -0,0 +1,27 @@
+<phase_2>:
+push %rbp
+push %rbx
+sub $0x28,%rsp
+mov %rsp,%rsi
+call 1c96 <read_six_numbers> # input: num[6]
+cmpl $0x0,(%rsp) # if (num1 < 0)
+js 160d <phase_2+0x22> # explode_bomb()
+mov %rsp,%rbp # rbp = num[0..5]
+mov $0x1,%ebx # ebx = 1
+jmp 1620 <phase_2+0x35> # ----------------------
+call 1c49 <explode_bomb> # |
+jmp 1603 <phase_2+0x18> # |
+add $0x1,%ebx # ebx++ <--------------------
+add $0x4,%rbp # rbp = num[2] | |
+cmp $0x6,%ebx # if (ebx == 6) | |
+je 1631 <phase_2+0x46> # return 0 | | (non error)
+mov %ebx,%eax # eax = ebx <----------- |
+add 0x0(%rbp),%eax # eax += num[ebx] |
+cmp %eax,0x4(%rbp) # if (eax == num[ebx]) |
+je 1614 <phase_2+0x29> # -------------------------
+call 1c49 <explode_bomb>
+jmp 1614 <phase_2+0x29>
+add $0x28,%rsp
+pop %rbx
+pop %rbp
+ret