{"id":1365,"date":"2018-11-07T16:48:58","date_gmt":"2018-11-07T08:48:58","guid":{"rendered":"http:\/\/www.yusian.com\/blog\/?p=1365"},"modified":"2018-11-07T16:48:58","modified_gmt":"2018-11-07T08:48:58","slug":"arm64%e4%b8%ad%e5%87%bd%e6%95%b0%e8%b0%83%e7%94%a8%e7%9a%84%e5%9f%ba%e6%9c%ac%e8%bf%87%e7%a8%8b","status":"publish","type":"post","link":"https:\/\/www.yusian.com\/blog\/assembler\/2018\/11\/07\/1648581365.html","title":{"rendered":"ARM64\u4e2d\u51fd\u6570\u8c03\u7528\u7684\u57fa\u672c\u8fc7\u7a0b"},"content":{"rendered":"<p>1\u3001C\u8bed\u8a00\u4ee3\u7801<\/p>\n<pre lang=\"c\" line=\"1\">\/\/\r\n\/\/  main.m\r\n\/\/  lldb\r\n\/\/\r\n\/\/  Created by \u4f59\u897f\u5b89 on 2018\/11\/1.\r\n\/\/  Copyright \u00a9 2018 yusian. All rights reserved.\r\n\/\/\r\n\r\nvoid func()\r\n{\r\n    \r\n}\r\nvoid asmFunction()\r\n{\r\n    int a = 10;\r\n    int b = 12;\r\n    func();\r\n}\r\nint main() {\r\n    asmFunction();\r\n}\r\n<\/pre>\n<p>2\u3001ARM64\u6c47\u7f16\u4ee3\u7801<\/p>\n<pre lang=\"asm\" line=\"1\">0x100032758 <+0>:  sub    sp, sp, #0x20          ;\u7533\u8bf7\u5c40\u90e8\u53d8\u91cf\u7a7a\u95f4\r\n\r\n0x10003275c <+4>:  stp    x29, x30, [sp, #0x10]  ; \u4fdd\u62a4fp,lr\r\n0x100032760 <+8>:  add    x29, sp, #0x10         ; fp \r\n\r\n0x100032764 <+12>: orr    w8, wzr, #0xc          ; w8 = 12\r\n0x100032768 <+16>: mov    w9, #0xa               ; w9 = 10\r\n0x10003276c <+20>: stur   w9, [x29, #-0x4]       ; int a = 10;\r\n0x100032770 <+24>: str    w8, [sp, #0x8]         ; int b = 12\r\n\r\n0x100032774 <+28>: bl     0x100032754            ; func()\r\n\r\n0x100032778 <+32>: ldp    x29, x30, [sp, #0x10]  ; \u6062\u590dfp,lr\r\n0x10003277c <+36>: add    sp, sp, #0x20          ; \u6062\u590dsp\r\n0x100032780 <+40>: ret  <\/pre>\n","protected":false},"excerpt":{"rendered":"<p>1\u3001C\u8bed\u8a00\u4ee3\u7801 \/\/ \/\/ main.m \/\/ lldb \/\/ \/\/ Created by \u4f59\u897f\u5b89 on 2018\/11\/1. \/\/ Copyright \u00a9 2018 yusian. All rights reserved. \/\/ void func() { } void asmFunction() { int a = 10; int b = 12; func(); } int main() { asmFunction(); } 2\u3001ARM64\u6c47\u7f16\u4ee3\u7801 0x100032758 : sub sp, sp, #0x20 ;\u7533\u8bf7\u5c40\u90e8\u53d8\u91cf\u7a7a\u95f4 0x10003275c : stp [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[124],"tags":[162,133,121],"class_list":["post-1365","post","type-post","status-publish","format-standard","hentry","category-assembler","tag-arm64","tag-133","tag-121"],"_links":{"self":[{"href":"https:\/\/www.yusian.com\/blog\/wp-json\/wp\/v2\/posts\/1365","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.yusian.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.yusian.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.yusian.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.yusian.com\/blog\/wp-json\/wp\/v2\/comments?post=1365"}],"version-history":[{"count":0,"href":"https:\/\/www.yusian.com\/blog\/wp-json\/wp\/v2\/posts\/1365\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.yusian.com\/blog\/wp-json\/wp\/v2\/media?parent=1365"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.yusian.com\/blog\/wp-json\/wp\/v2\/categories?post=1365"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.yusian.com\/blog\/wp-json\/wp\/v2\/tags?post=1365"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}