U E D R , A S I H C RSS

C/Assembly/Main

šฐ„  ๊ธฐ–ต •˜๋Š” ๊ฒƒ ๋ณตŠต.

~cpp 
int main(){ return; }

.globl main
        .type   main, @function
main:
        pushl   %ebp            // ˜„žฌ˜ ๋ช…๋ น–ด Counter๋ฅผ Stack—  €žฅ•จ. ด ”„๋กœ๊ทธ๋žจด ๋๋‚˜๋ฉด stack—„œ ๋‹ค‹œ ๊บผ๋ƒ„.
        movl    %esp, %ebp
        subl    $8, %esp        // ๋นˆ Šคƒ • ๋‹น
        andl    $-16, %esp

        movl    $0, %eax        // eax = 0
        addl    $15, %eax       // eax = 15
        addl    $15, %eax       // eax = 15  11110(Bin)
        shrl    $4, %eax        // eax = 0xF0000001   11110000000000000000000000000001(bin)
        sall    $4, %eax        // eax = 0x1F         00000000000000000000000000011111(bin)

        subl    %eax, %esp

        movl    $0, %eax        // return 0;
        leave                   // ”„๋กœ๊ทธ๋žจ˜ ข…๋ฃŒ. stack—„œ ”„๋กœ๊ทธ๋žจ ‹œž‘  „˜ ๋ช…๋ น–ด๋ฅผ ๊บผ๋‚ด %ebp— ง‘–ด ๋„ฃ๋Š” —ญ• .
        ret                     // ”„๋กœ๊ทธ๋žจด ข…๋ฃŒ.

push - ret
Windows OS๊ฐ€ •„๋‹Œ DOS OS๋Š” ๋ฉ”๋ชจ๋ฆฌ˜ ๊ด€๋ฆฌ๋ฅผ Kernel(OS˜ Core)ด •„๋‹Œ Program—„œ •ดฃผ๊ฒŒ ๋œ๋‹ค.
๋”ฐ๋ผ„œ ”„๋กœ๊ทธ๋žจด ‹œž‘•˜๊ณ  ๋‚˜๊ฐˆ๋•Œ—๋Š” –ด๋””„œ ”„๋กœ๊ทธ๋žจ„ ‹œž‘•˜๊ณ  ๋๋ƒˆ๋Š”ง€ œ„น˜๋ฅผ  €žฅ(push)•˜๊ณ  ๊ผญ ๋ฐ˜™˜(leave)•ด•ผ•œ๋‹ค.
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:22:47
Processing time 0.0083 sec