From 9d4a7d1c07d3ce894c7ed3454ab73d31a0334d83 Mon Sep 17 00:00:00 2001 From: ov-4 Date: Tue, 20 Jan 2026 14:31:20 +0000 Subject: Updated solution --- bomblab/phase4.asm | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 bomblab/phase4.asm (limited to 'bomblab/phase4.asm') diff --git a/bomblab/phase4.asm b/bomblab/phase4.asm new file mode 100644 index 0000000..f0c5a85 --- /dev/null +++ b/bomblab/phase4.asm @@ -0,0 +1,43 @@ +# OBJDUMP +0000000000400fce : + 400fce: 48 83 ec 08 sub $0x8,%rsp + + 400fd2: 89 d0 mov %right,%range + 400fd4: 29 f0 sub %left,%range + 400fd6: 89 c1 mov %range,%mid + 400fd8: c1 e9 1f shr $0x1f,%mid + 400fdb: 01 c8 add %mid,%range + 400fdd: d1 f8 sar $1,%range + 400fdf: 8d 0c 30 lea (%range,%left,1),%mid + 400fe2: 39 f9 cmp %input,%mid + # range = right - left + # mid = left + (range/2) + + + 400fe4: 7e 0c jle 400ff2 # if (mid > input), left part + + # left part + # [left, mid-1] + 400fe6: 8d 51 ff lea -0x1(%mid),%right # right = mid - 1 + 400fe9: e8 e0 ff ff ff call 400fce + 400fee: 01 c0 add %range,%range # range = 2 * range + 400ff0: eb 15 jmp 401007 + + # right part + # [mid+1, right] + 400ff2: b8 00 00 00 00 mov $0x0,%range + 400ff7: 39 f9 cmp %input,%mid + 400ff9: 7d 0c jge 401007 # if (mid >= input) ret + 400ffb: 8d 71 01 lea 0x1(%mid),%left # left = mid + 1 + 400ffe: e8 cb ff ff ff call 400fce + 401003: 8d 44 00 01 lea 0x1(%range,%range,1),%range # range = 2*range + 1 + + 401007: 48 83 c4 08 add $0x8,%rsp + 40100b: c3 ret # ret range (eax) + + +# all caller saved +# range --- eax +# left --- esi +# right --- edx +# input --- rdi (constant) -- cgit v1.3.1-4-g156e