{"id":40,"date":"2020-05-26T14:33:58","date_gmt":"2020-05-26T14:33:58","guid":{"rendered":"http:\/\/www.rottedfrog.co.uk\/?p=40"},"modified":"2020-05-26T15:29:00","modified_gmt":"2020-05-26T15:29:00","slug":"zero-cost-abstractions-an-addendum","status":"publish","type":"post","link":"https:\/\/www.rottedfrog.co.uk\/?p=40","title":{"rendered":"Zero Cost Abstractions: An Addendum"},"content":{"rendered":"\n<p>On Reddit, <a href=\"https:\/\/www.reddit.com\/user\/Icarium-Lifestealer\/\">Icarium-Lifestealer<\/a> asked me how the disassembly looked if I used <code>-C panic=abort<\/code> instead of <code>extern \"C\"<\/code>. Curious, I tried and came out with the following assembly, which is again exactly the same as the C example<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"asm\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">        push    rbx\n        mov     rbx, rdi\n        cmp     dword ptr [rdi], 43\n        jl      .LBB3_2\n        mov     rdi, rbx\n        call    example::bar\n        mov     dword ptr [rbx], 42\n.LBB3_2:\n        mov     rdi, rbx\n        pop     rbx\n        jmp     example::baz<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>On Reddit, Icarium-Lifestealer asked me how the disassembly looked if I used -C panic=abort instead of extern &#8220;C&#8221;. Curious, I tried and came out with the following assembly, which is again exactly the same as the C example<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[],"_links":{"self":[{"href":"https:\/\/www.rottedfrog.co.uk\/index.php?rest_route=\/wp\/v2\/posts\/40"}],"collection":[{"href":"https:\/\/www.rottedfrog.co.uk\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.rottedfrog.co.uk\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.rottedfrog.co.uk\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.rottedfrog.co.uk\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=40"}],"version-history":[{"count":7,"href":"https:\/\/www.rottedfrog.co.uk\/index.php?rest_route=\/wp\/v2\/posts\/40\/revisions"}],"predecessor-version":[{"id":47,"href":"https:\/\/www.rottedfrog.co.uk\/index.php?rest_route=\/wp\/v2\/posts\/40\/revisions\/47"}],"wp:attachment":[{"href":"https:\/\/www.rottedfrog.co.uk\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=40"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.rottedfrog.co.uk\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=40"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.rottedfrog.co.uk\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=40"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}