.text:0000000000001318 ; int __cdecl main(int argc, const char **argv, const char **envp)
.text:0000000000001318 EXPORT main
.text:0000000000001318 main ; DATA XREF: LOAD:0000000000000560↑o
.text:0000000000001318 ; .got:main_ptr↓o
.text:0000000000001318
.text:0000000000001318 var_2A0 = -0x2A0
.text:0000000000001318 var_29C = -0x29C
.text:0000000000001318 var_298 = -0x298
.text:0000000000001318 var_290 = -0x290
.text:0000000000001318 var_288 = -0x288
.text:0000000000001318 var_27C = -0x27C
.text:0000000000001318 var_278 = -0x278
.text:0000000000001318 var_270 = -0x270
.text:0000000000001318 var_268 = -0x268
.text:0000000000001318 var_260 = -0x260
.text:0000000000001318 var_258 = -0x258
.text:0000000000001318 var_250 = -0x250
.text:0000000000001318 var_248 = -0x248
.text:0000000000001318 var_240 = -0x240
.text:0000000000001318 var_234 = -0x234
.text:0000000000001318 var_230 = -0x230
.text:0000000000001318 var_228 = -0x228
.text:0000000000001318 var_220 = -0x220
.text:0000000000001318 var_218 = -0x218
.text:0000000000001318 var_210 = -0x210
.text:0000000000001318 var_20C = -0x20C
.text:0000000000001318 var_208 = -0x208
.text:0000000000001318 var_200 = -0x200
.text:0000000000001318 var_1F8 = -0x1F8
.text:0000000000001318 var_1F0 = -0x1F0
.text:0000000000001318 var_1E8 = -0x1E8
.text:0000000000001318 var_1DC = -0x1DC
.text:0000000000001318 var_1D8 = -0x1D8
.text:0000000000001318 var_1D0 = -0x1D0
.text:0000000000001318 var_1C8 = -0x1C8
.text:0000000000001318 var_1C0 = -0x1C0
.text:0000000000001318 var_1BC = -0x1BC
.text:0000000000001318 var_1B8 = -0x1B8
.text:0000000000001318 var_1B0 = -0x1B0
.text:0000000000001318 var_198 = -0x198
.text:0000000000001318 var_190 = -0x190
.text:0000000000001318 var_188 = -0x188
.text:0000000000001318 var_180 = -0x180
.text:0000000000001318 var_17C = -0x17C
.text:0000000000001318 var_150 = -0x150
.text:0000000000001318 var_14C = -0x14C
.text:0000000000001318 var_138 = -0x138
.text:0000000000001318 var_108 = -0x108
.text:0000000000001318 var_D8 = -0xD8
.text:0000000000001318 var_A8 = -0xA8
.text:0000000000001318 var_78 = -0x78
.text:0000000000001318 var_48 = -0x48
.text:0000000000001318 var_10 = -0x10
.text:0000000000001318 var_s0 = 0
.text:0000000000001318
.text:0000000000001318 ; __unwind {
//保存栈帧
.text:0000000000001318 STR X28, [SP,#-0x10+var_10]!
.text:000000000000131C STP X29, X30, [SP,#0x10+var_s0]
.text:0000000000001320 ADD X29, SP, #0x10
.text:0000000000001324 SUB SP, SP, #0x290
//栈保护
.text:0000000000001328 ADD X8, SP, #0x2A0+var_240
.text:000000000000132C ADD X0, SP, #0x2A0+var_180
.text:0000000000001330 MRS X9, #3, c13, c0, #2
.text:0000000000001334 LDR X9, [X9,#0x28]
.text:0000000000001338 STR X9, [X8]
.text:000000000000133C STR WZR, [SP,#0x2A0+var_1C0]
.text:0000000000001340 STR X8, [SP,#0x2A0+var_248]
.text:0000000000001344 BL sub_16F0
// var_48是s的this
.text:0000000000001348 SUB X0, X29, #-var_48
.text:000000000000134C ADD X1, SP, #0x2A0+var_180
.text:0000000000001350 BL sub_1700
.text:0000000000001354 ADD X0, SP, #0x2A0+var_180
.text:0000000000001358 BL sub_1748 //空
// cin>>s;
.text:0000000000001364 SUB X1, X29, #-var_48
.text:0000000000001368 BL sub_1758
.text:000000000000136C ADD X8, SP, #0x2A0+var_188
.text:0000000000001370 STR X0, [SP,#0x2A0+var_250]
.text:0000000000001374 MOV X0, X8
.text:0000000000001378 BL sub_16F0//空
//string s1;
.text:000000000000137C SUB X0, X29, #-var_78
.text:0000000000001380 ADD X1, SP, #0x2A0+var_188
.text:0000000000001384 BL sub_1700
.text:0000000000001388 ADD X0, SP, #0x2A0+var_188
.text:000000000000138C BL sub_1748
// string s2(s1);//直接构造
.text:0000000000001390 SUB X0, X29, #-var_A8 ; this
.text:0000000000001394 SUB X1, X29, #-var_78 ; std::string *
.text:0000000000001398 BL _ZNSsC2ERKSs ; std::string::string(std::string const&)
// string s3=s1;//拷贝初始化
.text:000000000000139C SUB X0, X29, #-var_D8 ; this
.text:00000000000013A0 SUB X1, X29, #-var_78 ; std::string *
.text:00000000000013A4 BL _ZNSsC2ERKSs ; std::string::string(std::string const&)
.text:00000000000013A8 ADD X0, SP, #0x2A0+var_190
.text:00000000000013AC BL sub_16F0
// string s4("1234");//直接构造
.text:00000000000013B0 ADD X0, SP, #0x2A0+var_108
.text:00000000000013BC ADD X2, SP, #0x2A0+var_190
.text:00000000000013C0 BL _ZNSsC2EPKcRKSaIcE ; std::string::string(char const*,std::allocator<char> const&)
.text:00000000000013C4 ADD X0, SP, #0x2A0+var_190
.text:00000000000013C8 BL sub_1748
.text:00000000000013CC ADD X0, SP, #0x2A0+var_198
.text:00000000000013D0 BL sub_16F0
// string s5="1234";//拷贝初始化
.text:00000000000013D4 ADD X0, SP, #0x2A0+var_138
.text:00000000000013E0 ADD X2, SP, #0x2A0+var_198
.text:00000000000013E4 BL _ZNSsC2EPKcRKSaIcE ; std::string::string(char const*,std::allocator<char> const&)
.text:00000000000013E8 ADD X0, SP, #0x2A0+var_198
.text:00000000000013EC BL sub_1748
// s5=s1;//赋值
.text:00000000000013F0 ADD X0, SP, #0x2A0+var_138
.text:00000000000013F4 SUB X1, X29, #-var_78
.text:00000000000013F8 BL sub_1AD4
//s的this-获取begin
.text:00000000000013FC SUB X8, X29, #-var_48
.text:0000000000001400 STR X8, [SP,#0x2A0+var_1C8]
.text:0000000000001404 LDR X8, [SP,#0x2A0+var_1C8]
.text:0000000000001408 STR X0, [SP,#0x2A0+var_258]
.text:000000000000140C MOV X0, X8
.text:0000000000001410 BL sub_1B44
//获取end
.text:0000000000001414 STR X0, [SP,#0x2A0+var_1D0]
.text:0000000000001418 LDR X0, [SP,#0x2A0+var_1C8]
.text:000000000000141C BL sub_1B68
.text:0000000000001420 STR X0, [SP,#0x2A0+var_1D8]
.text:0000000000001424
.text:0000000000001424 loc_1424 ; CODE XREF: main+158↓j
//比较
.text:0000000000001424 LDR X8, [SP,#0x2A0+var_1D0]
.text:0000000000001428 LDR X9, [SP,#0x2A0+var_1D8]
.text:000000000000142C CMP X8, X9
.text:0000000000001430 B.EQ loc_1474 //相等时跳
//cout<<t<<std::endl;
.text:000000000000143C LDR X8, [SP,#0x2A0+var_1D0]
.text:0000000000001440 LDRB W9, [X8]
//备份了一份*it
.text:0000000000001444 STRB W9, [SP,#0x2A0+var_1DC]
.text:0000000000001448 LDRB W9, [SP,#0x2A0+var_1DC]
.text:000000000000144C UXTB W1, W9
.text:0000000000001450 BL sub_1B8C
.text:000000000000145C BL sub_1BC0
.text:0000000000001460 STR X0, [SP,#0x2A0+var_260]
.text:0000000000001464 LDR X8, [SP,#0x2A0+var_1D0]
.text:0000000000001468 ADD X8, X8, #1
.text:000000000000146C STR X8, [SP,#0x2A0+var_1D0]
.text:0000000000001470 B loc_1424
.text:0000000000001474 ; ---------------------------------------------------------------------------
.text:0000000000001474
.text:0000000000001474 loc_1474 ; CODE XREF: main+118↑j
//取begin与end
.text:0000000000001474 SUB X8, X29, #-var_48
.text:0000000000001478 STR X8, [SP,#0x2A0+var_1E8]
.text:000000000000147C LDR X0, [SP,#0x2A0+var_1E8]
.text:0000000000001480 BL sub_1B44
.text:0000000000001484 STR X0, [SP,#0x2A0+var_1F0]
.text:0000000000001488 LDR X0, [SP,#0x2A0+var_1E8]
.text:000000000000148C BL sub_1B68
.text:0000000000001490 STR X0, [SP,#0x2A0+var_1F8]
.text:0000000000001494
//比较
.text:0000000000001494 loc_1494 ; CODE XREF: main+1C8↓j
.text:0000000000001494 LDR X8, [SP,#0x2A0+var_1F0]
.text:0000000000001498 LDR X9, [SP,#0x2A0+var_1F8]
.text:000000000000149C CMP X8, X9
.text:00000000000014A0 B.EQ loc_14E4
//for体
//直接解it
.text:00000000000014AC LDR X8, [SP,#0x2A0+var_1F0]
.text:00000000000014B0 STR X8, [SP,#0x2A0+var_200]
.text:00000000000014B4 LDR X8, [SP,#0x2A0+var_200]
.text:00000000000014B8 LDRB W9, [X8]
.text:00000000000014BC UXTB W1, W9
.text:00000000000014C0 BL sub_1B8C
.text:00000000000014CC BL sub_1BC0
.text:00000000000014D0 STR X0, [SP,#0x2A0+var_268]
.text:00000000000014D4 LDR X8, [SP,#0x2A0+var_1F0]
.text:00000000000014D8 ADD X8, X8, #1
.text:00000000000014DC STR X8, [SP,#0x2A0+var_1F0]
.text:00000000000014E0 B loc_1494
.text:00000000000014E4 ; ---------------------------------------------------------------------------
.text:00000000000014E4
.text:00000000000014E4 loc_14E4 ; CODE XREF: main+188↑j
//auto it=s4.begin()
.text:00000000000014E4 ADD X0, SP, #0x2A0+var_108
.text:00000000000014E8 BL sub_1B44
.text:00000000000014EC STR X0, [SP,#0x2A0+var_208]
.text:00000000000014F0
.text:00000000000014F0 loc_14F0 ; CODE XREF: main+228↓j
//取end,判断
.text:00000000000014F0 ADD X0, SP, #0x2A0+var_108
.text:00000000000014F4 LDR X8, [SP,#0x2A0+var_208]
.text:00000000000014F8 STR X8, [SP,#0x2A0+var_270]
.text:00000000000014FC BL sub_1B68
.text:0000000000001500 LDR X8, [SP,#0x2A0+var_270]
.text:0000000000001504 CMP X8, X0
.text:0000000000001508 B.EQ loc_1544
//for体
.text:0000000000001514 LDR X8, [SP,#0x2A0+var_208]
.text:0000000000001518 LDRB W9, [X8]
.text:000000000000151C UXTB W1, W9
.text:0000000000001520 BL sub_1B8C
.text:000000000000152C BL sub_1BC0
.text:0000000000001530 STR X0, [SP,#0x2A0+var_278]
.text:0000000000001534 LDR X8, [SP,#0x2A0+var_208]
.text:0000000000001538 ADD X8, X8, #1
.text:000000000000153C STR X8, [SP,#0x2A0+var_208]
.text:0000000000001540 B loc_14F0
.text:0000000000001544 ; ---------------------------------------------------------------------------
.text:0000000000001544
.text:0000000000001544 loc_1544 ; CODE XREF: main+1F0↑j
//int i1=0;
.text:0000000000001544 MOV W8, WZR
.text:0000000000001548 STR WZR, [SP,#0x2A0+var_20C]
// bool b1=i1==1&&true; var_27C是b1
.text:000000000000154C LDR W9, [SP,#0x2A0+var_20C]
.text:0000000000001550 CMP W9, #1
.text:0000000000001554 STR W8, [SP,#0x2A0+var_27C]
.text:0000000000001558 B.NE loc_1568
.text:000000000000155C MOV W8, #1
.text:0000000000001560 STR W8, [SP,#0x2A0+var_27C]
.text:0000000000001564 B loc_1568
.text:0000000000001568 ; ---------------------------------------------------------------------------
.text:0000000000001568
.text:0000000000001568 loc_1568 ; CODE XREF: main+240↑j
.text:0000000000001568 ; main+24C↑j
//将b1置1/0
.text:0000000000001568 LDR W8, [SP,#0x2A0+var_27C]
.text:000000000000156C ADD X0, SP, #0x2A0+var_1B8
.text:0000000000001570 AND W8, W8, #1
.text:0000000000001574 STRB W8, [SP,#0x2A0+var_210]
.text:0000000000001578 BL sub_1C60
// std::vector<int> vec; var_1B0为vec的this
.text:000000000000157C ADD X0, SP, #0x2A0+var_1B0
.text:0000000000001580 ADD X1, SP, #0x2A0+var_1B8
.text:0000000000001584 BL sub_1C70
.text:0000000000001588 ADD X0, SP, #0x2A0+var_1B8
.text:000000000000158C BL sub_1C9C//空
// vec.push_back(3);传入的是指向3的指针
.text:0000000000001590 ADD X0, SP, #0x2A0+var_1B0
.text:0000000000001594 ADD X1, SP, #0x2A0+var_1BC
.text:0000000000001598 MOV W8, #3
.text:000000000000159C STR W8, [SP,#0x2A0+var_1BC]
.text:00000000000015A0 BL sub_1CAC
//获取0号
.text:00000000000015A4 ADD X0, SP, #0x2A0+var_1B0
.text:00000000000015A8 MOV X1, XZR
.text:00000000000015AC BL sub_1D98
// vec[0]=1;
.text:00000000000015B0 ADD X1, SP, #0x2A0+var_1B0
.text:00000000000015B4 MOV W8, #1
.text:00000000000015B8 STR W8, [X0]
// auto veci=vec.begin();
.text:00000000000015BC MOV X0, X1
.text:00000000000015C0 BL sub_1DD0
// int a[5]={1,2,3,4,5}; var_14C是数组地址,这里直接用了memcpy。var_288是指针,存var_14C
.text:00000000000015C4 ADD X1, SP, #0x2A0+var_14C
.text:00000000000015D0 MOV X2, #0x14
.text:00000000000015D4 STR X0, [SP,#0x2A0+var_218]
.text:00000000000015D8 MOV X0, X1
.text:00000000000015DC STR X1, [SP,#0x2A0+var_288]
.text:00000000000015E0 MOV X1, X30
.text:00000000000015E4 BL .memcpy
.text:00000000000015E8 LDR X0, [SP,#0x2A0+var_288]
.text:00000000000015EC STR X0, [SP,#0x2A0+var_220]
//初始化i
.text:00000000000015F0 LDR X1, [SP,#0x2A0+var_220]
.text:00000000000015F4 STR X1, [SP,#0x2A0+var_228]
//尾后
.text:00000000000015F8 LDR X1, [SP,#0x2A0+var_220]
.text:00000000000015FC ADD X1, X1, #0x14
.text:0000000000001600 STR X1, [SP,#0x2A0+var_230]
.text:0000000000001604
.text:0000000000001604 loc_1604 ; CODE XREF: main+334↓j
//比较
.text:0000000000001604 LDR X8, [SP,#0x2A0+var_228]
.text:0000000000001608 LDR X9, [SP,#0x2A0+var_230]
.text:000000000000160C CMP X8, X9
.text:0000000000001610 B.EQ loc_1650
.text:000000000000161C LDR X8, [SP,#0x2A0+var_228]
.text:0000000000001620 LDR W9, [X8]
.text:0000000000001624 STR W9, [SP,#0x2A0+var_234]
.text:0000000000001628 LDR W1, [SP,#0x2A0+var_234]
.text:000000000000162C BL sub_1E18
.text:0000000000001638 BL sub_1DE8
.text:000000000000163C STR X0, [SP,#0x2A0+var_290]
.text:0000000000001640 LDR X8, [SP,#0x2A0+var_228]
.text:0000000000001644 ADD X8, X8, #4
.text:0000000000001648 STR X8, [SP,#0x2A0+var_228]
.text:000000000000164C B loc_1604
.text:0000000000001650 ; ---------------------------------------------------------------------------
.text:0000000000001650
.text:0000000000001650 loc_1650 ; CODE XREF: main+2F8↑j
//
.text:0000000000001650 ADD X0, SP, #0x2A0+var_1B0
.text:0000000000001654 MOV W8, #1
.text:0000000000001658 MOV W9, WZR
.text:000000000000165C MOV X2, #0x30
.text:0000000000001660 ADD X10, SP, #0x2A0+var_17C
.text:0000000000001664 STR X0, [SP,#0x2A0+var_298]
// int a2[3][4]={0}; var_17C是a2地址
.text:0000000000001668 MOV X0, X10
.text:000000000000166C UXTB W1, W9
.text:0000000000001670 STR W8, [SP,#0x2A0+var_29C]
.text:0000000000001674 BL .memset
// a2[2][3]=1;17C-150=44个字节 8+3=11 正确
.text:0000000000001678 LDR W8, [SP,#0x2A0+var_29C]
.text:000000000000167C STR W8, [SP,#0x2A0+var_150]
//析构函数
.text:0000000000001680 LDR X0, [SP,#0x2A0+var_298]
.text:0000000000001684 BL sub_1E90
.text:0000000000001688 ADD X0, SP, #0x2A0+var_138
.text:000000000000168C BL sub_1F0C
.text:0000000000001690 ADD X0, SP, #0x2A0+var_108
.text:0000000000001694 BL sub_1F0C
.text:0000000000001698 SUB X0, X29, #-var_D8
.text:000000000000169C BL sub_1F0C
.text:00000000000016A0 SUB X0, X29, #-var_A8
.text:00000000000016A4 BL sub_1F0C
.text:00000000000016A8 SUB X0, X29, #-var_78
.text:00000000000016AC BL sub_1F0C
.text:00000000000016B0 SUB X0, X29, #-var_48
.text:00000000000016B4 BL sub_1F0C
//栈检查,返回结果
.text:00000000000016B8 LDR W0, [SP,#0x2A0+var_1C0]
.text:00000000000016BC MRS X10, #3, c13, c0, #2
.text:00000000000016C0 LDR X10, [X10,#0x28]
.text:00000000000016C4 LDR X2, [SP,#0x2A0+var_248]
.text:00000000000016C8 LDR X30, [X2]
.text:00000000000016CC CMP X10, X30
.text:00000000000016D0 STR W0, [SP,#0x2A0+var_2A0]
.text:00000000000016D4 B.NE loc_16EC
.text:00000000000016D8 LDR W0, [SP,#0x2A0+var_2A0]
.text:00000000000016DC ADD SP, SP, #0x290
.text:00000000000016E0 LDP X29, X30, [SP,#0x10+var_s0]
.text:00000000000016E4 LDR X28, [SP+0x10+var_10],#0x20
.text:00000000000016E8 RET
.text:00000000000016EC ; ---------------------------------------------------------------------------
.text:00000000000016EC
.text:00000000000016EC loc_16EC ; CODE XREF: main+3BC↑j
.text:00000000000016EC BL .__stack_chk_fail
.text:00000000000016EC ; } // starts at 1318
.text:00000000000016EC ; End of function main
近期评论