CMU-CSAPP #1

Merged
Void_Deer merged 7 commits from CMU-CSAPP into main 2026-04-20 16:54:18 +08:00
2 changed files with 16 additions and 6 deletions
Showing only changes of commit 70711a3644 - Show all commits

View File

@@ -650,30 +650,39 @@ Disassembly of section .text:
# 0x603300 <node4>: 0x00000004000002b3 0x0000000000603310 # 0x603300 <node4>: 0x00000004000002b3 0x0000000000603310
# 0x603310 <node5>: 0x00000005000001dd 0x0000000000603320 # 0x603310 <node5>: 0x00000005000001dd 0x0000000000603320
# 0x603320 <node6>: 0x00000006000001bb 0x0000000000000000 # 0x603320 <node6>: 0x00000006000001bb 0x0000000000000000
# this seems like a linked list
4011a9: eb cb jmp 401176 <phase_6+0x82> # goto L6OuterLoop3Begin 4011a9: eb cb jmp 401176 <phase_6+0x82> # goto L6OuterLoop3Begin
# L6OuterLoop3Exit # L6OuterLoop3Exit
4011ab: 48 8b 5c 24 20 mov 0x20(%rsp),%rbx 4011ab: 48 8b 5c 24 20 mov 0x20(%rsp),%rbx
4011b0: 48 8d 44 24 28 lea 0x28(%rsp),%rax 4011b0: 48 8d 44 24 28 lea 0x28(%rsp),%rax
4011b5: 48 8d 74 24 50 lea 0x50(%rsp),%rsi 4011b5: 48 8d 74 24 50 lea 0x50(%rsp),%rsi
# breakpoint 2
# x/6xg ($rsp + 0x20) prints:
# 0x7fffffffd850: 0x00000000006032d0 0x00000000006032e0
# 0x7fffffffd860: 0x00000000006032f0 0x0000000000603300
# 0x7fffffffd870: 0x0000000000603310 0x0000000000603320
4011ba: 48 89 d9 mov %rbx,%rcx 4011ba: 48 89 d9 mov %rbx,%rcx
4011bd: 48 8b 10 mov (%rax),%rdx 4011bd: 48 8b 10 mov (%rax),%rdx
4011c0: 48 89 51 08 mov %rdx,0x8(%rcx) 4011c0: 48 89 51 08 mov %rdx,0x8(%rcx)
4011c4: 48 83 c0 08 add $0x8,%rax 4011c4: 48 83 c0 08 add $0x8,%rax # rax seems like a pointer iterating through linked list
4011c8: 48 39 f0 cmp %rsi,%rax 4011c8: 48 39 f0 cmp %rsi,%rax
4011cb: 74 05 je 4011d2 <phase_6+0xde> 4011cb: 74 05 je 4011d2 <phase_6+0xde>
4011cd: 48 89 d1 mov %rdx,%rcx 4011cd: 48 89 d1 mov %rdx,%rcx
4011d0: eb eb jmp 4011bd <phase_6+0xc9> 4011d0: eb eb jmp 4011bd <phase_6+0xc9>
4011d2: 48 c7 42 08 00 00 00 movq $0x0,0x8(%rdx) 4011d2: 48 c7 42 08 00 00 00 movq $0x0,0x8(%rdx)
4011d9: 00 4011d9: 00
4011da: bd 05 00 00 00 mov $0x5,%ebp 4011da: bd 05 00 00 00 mov $0x5,%ebp # ebp is set to 5
4011df: 48 8b 43 08 mov 0x8(%rbx),%rax #L6Loop4Start
4011e3: 8b 00 mov (%rax),%eax 4011df: 48 8b 43 08 mov 0x8(%rbx),%rax # rax = rbx->next
4011e3: 8b 00 mov (%rax),%eax # eax = rax->value_low32bit
4011e5: 39 03 cmp %eax,(%rbx) 4011e5: 39 03 cmp %eax,(%rbx)
4011e7: 7d 05 jge 4011ee <phase_6+0xfa> 4011e7: 7d 05 jge 4011ee <phase_6+0xfa> # if next value >= current value, pass the test.
# This means the linked list should be in descending order.
4011e9: e8 4c 02 00 00 call 40143a <explode_bomb> 4011e9: e8 4c 02 00 00 call 40143a <explode_bomb>
4011ee: 48 8b 5b 08 mov 0x8(%rbx),%rbx 4011ee: 48 8b 5b 08 mov 0x8(%rbx),%rbx
4011f2: 83 ed 01 sub $0x1,%ebp 4011f2: 83 ed 01 sub $0x1,%ebp # ebp is the counter. 6 loops
4011f5: 75 e8 jne 4011df <phase_6+0xeb> 4011f5: 75 e8 jne 4011df <phase_6+0xeb>
#L6Loop4End
4011f7: 48 83 c4 50 add $0x50,%rsp 4011f7: 48 83 c4 50 add $0x50,%rsp
4011fb: 5b pop %rbx 4011fb: 5b pop %rbx
4011fc: 5d pop %rbp 4011fc: 5d pop %rbp

View File

@@ -3,3 +3,4 @@ Border relations with Canada have never been better.
0 207 0 207
7 0 7 0
)/.%&' )/.%&'
4 3 2 1 6 5