1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
| main: # @main push rbp mov rbp, rsp sub rsp, 96 mov dword ptr [rbp - 4], 0 mov rax, qword ptr [.L__const.main.labels] mov qword ptr [rbp - 48], rax mov rax, qword ptr [.L__const.main.labels+8] mov qword ptr [rbp - 40], rax mov rax, qword ptr [.L__const.main.labels+16] mov qword ptr [rbp - 32], rax mov rax, qword ptr [.L__const.main.labels+24] mov qword ptr [rbp - 24], rax mov dword ptr [rbp - 52], 1 movsxd rax, dword ptr [rbp - 52] mov rax, qword ptr [rbp + 8*rax - 48] mov qword ptr [rbp - 64], rax # 8-byte Spill jmp .LBB0_6 .Ltmp1: # Block address taken movabs rdi, offset .L.str mov al, 0 call printf mov dword ptr [rbp - 68], eax # 4-byte Spill jmp .LBB0_5 .Ltmp2: # Block address taken movabs rdi, offset .L.str.1 mov al, 0 call printf mov dword ptr [rbp - 72], eax # 4-byte Spill jmp .LBB0_5 .Ltmp3: # Block address taken movabs rdi, offset .L.str.2 mov al, 0 call printf mov dword ptr [rbp - 76], eax # 4-byte Spill jmp .LBB0_5 .Ltmp4: # Block address taken movabs rdi, offset .L.str.3 mov al, 0 call printf mov dword ptr [rbp - 80], eax # 4-byte Spill .LBB0_5: movabs rdi, offset .L.str.4 mov al, 0 call printf xor ecx, ecx mov dword ptr [rbp - 84], eax # 4-byte Spill mov eax, ecx add rsp, 96 pop rbp ret .LBB0_6: mov rax, qword ptr [rbp - 64] # 8-byte Reload jmp rax .L__const.main.labels: .quad .Ltmp1 .quad .Ltmp2 .quad .Ltmp3 .quad .Ltmp4
.L.str: .asciz "This is label 1\n"
.L.str.1: .asciz "This is label 2\n"
.L.str.2: .asciz "This is label 3\n"
.L.str.3: .asciz "Invalid label\n"
.L.str.4: .asciz "End of program\n"
|