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.0031 sec