• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            coreBugZJ

            此 blog 已棄。

            嵌入式上機(jī)之三,匯編與C語(yǔ)言相互調(diào)用

            1.1 編寫一個(gè)匯編程序mixop.s
            – 實(shí)現(xiàn)函數(shù) y=mixop(x1,x2,x3)
            – y=x1+x2*x3
            – 調(diào)用c2.c中的multiply函數(shù)
            1.2 C程序1:c1.c
            – 實(shí)現(xiàn)函數(shù) void init();
            – 作為啟動(dòng)時(shí)的起始地址
            – 在該函數(shù)內(nèi)要調(diào)用mixop函數(shù)完成6+40*50,結(jié)果存放在變量y中。
            1.3 C程序2:c2.c
            – 實(shí)現(xiàn)函數(shù)y=multiply(x1,x2)
            – y=x1*x2
            提示:init()函數(shù)結(jié)尾時(shí),設(shè)置死循環(huán)。


             1/*
             2c1.c
             3*/

             4
             5extern unsigned int mixop( unsigned int x1, unsigned int x2, unsigned int x3 );
             6
             7void init() {
             8    unsigned int y;
             9    y = mixop( 64050 );
            10    for ( ; ; ) {
            11    }

            12}

            13
            14/*
            15生成代碼:
            16
            170x00008000        mov           ip, sp
            180x00008004        stmdb         sp!, {fp, ip, lr, pc}
            190x00008008        sub           fp, ip, #4
            200x0000800c        sub           sp, sp, #4
            210x00008010        mov           r0, #6
            220x00008014        mov           r1, #40
            230x00008018        mov           r2, #50
            240x0000801c        bl            0x8058
            250x00008020        mov           r3, r0
            260x00008024        str           r3, [fp, -#16]
            270x00008028        b             0x8028
            28*/

            29


             1/*
             2c2.c
             3*/

             4
             5unsigned int multiply( unsigned int x1, unsigned int x2 ) {
             6    return x1 * x2;
             7}

             8
             9/*
            10生成代碼:
            11
            12multiply :
            130x0000802c        mov           ip, sp
            140x00008030        stmdb         sp!, {fp, ip, lr, pc}
            150x00008034        sub           fp, ip, #4
            160x00008038        sub           sp, sp, #8
            170x0000803c        str           r0, [fp, -#16]
            180x00008040        str           r1, [fp, -#20]
            190x00008044        ldr           r3, [fp, -#20]
            200x00008048        ldr           r2, [fp, -#16]
            210x0000804c        mul           r3, r2, r3
            220x00008050        mov           r0, r3
            230x00008054        ldmdb         fp, {fp, sp, pc}
            24*/

            25


             1/*
             2mixop.s
             3*/

             4
             5.extern multiply
             6
             7/*
             8unsigned int mixop( unsigned int x1, unsigned int x2, unsigned int x3 );
             9*/

            10.global mixop
            11
            12.text
            13
            14mixop:
            15    mov       ip,      sp
            16    stmdb     sp!,     {fp, ip, lr, pc}
            17    sub       fp,      ip,     #4
            18
            19    stmdb     sp!,     {r0-r2}
            20    mov    r0,    r1
            21    mov    r1,    r2
            22    bl     multiply
            23    mov     r3,     r0
            24    ldmia     sp!,     {r0-r2}
            25    add     r0,     r0,     r3
            26
            27    ldmdb fp, {fp, sp, pc}
            28
            29.end
            30
            31/*
            32生成代碼:
            33
            34mixop :
            350x00008058        mov           ip, sp
            360x0000805c        stmdb         sp!, {fp, ip, lr, pc}
            370x00008060        sub           fp, ip, #4
            380x00008064        stmdb         sp!, {r0, r1, r2}
            390x00008068        mov           r0, r1
            400x0000806c        mov           r1, r2
            410x00008070        bl            0x802c
            420x00008074        mov           r3, r0
            430x00008078        ldmia         sp!, {r0, r1, r2}
            440x0000807c        add           r0, r0, r3
            450x00008080        ldmdb         fp, {fp, sp, pc}
            46*/

            47


            存在的問題,SP寄存器沒有初始化,程序開始運(yùn)行時(shí),SP 為零,數(shù)據(jù)壓棧后,SP 下溢出,但結(jié)果沒受影響。

            posted on 2012-03-18 22:55 coreBugZJ 閱讀(418) 評(píng)論(0)  編輯 收藏 引用 所屬分類: Assemble 、CPUGPU 、課內(nèi)作業(yè)ProgrammingLanguage

            伊人伊成久久人综合网777| 亚洲综合精品香蕉久久网97| 亚洲狠狠婷婷综合久久蜜芽| 久久精品无码午夜福利理论片| 国产午夜免费高清久久影院| 久久国产成人亚洲精品影院| 无码人妻久久一区二区三区 | 性做久久久久久久久老女人| 色综合久久久久无码专区| 九九热久久免费视频| 久久人人爽人人爽人人片AV不| 国产精品成人久久久久久久| 亚洲AV无码一区东京热久久| 久久久久无码国产精品不卡| 国内精品久久久久伊人av| 久久久久久久免费视频| 精品久久国产一区二区三区香蕉| 久久精品欧美日韩精品| 人妻无码αv中文字幕久久琪琪布| 久久成人精品视频| 久久久久久久亚洲Av无码| 一级a性色生活片久久无| 久久精品视频91| 日韩亚洲欧美久久久www综合网| 亚洲精品乱码久久久久久按摩 | 久久久久女教师免费一区| 国产午夜精品久久久久免费视| 亚洲日韩欧美一区久久久久我| 国产91色综合久久免费| 无码国内精品久久人妻| 久久久久久久久久久| 欧美亚洲国产精品久久高清| 亚洲欧美久久久久9999| 久久婷婷人人澡人人| 久久激情五月丁香伊人| 国产成人香蕉久久久久| 久久国产精品成人免费| 久久精品免费观看| 国产激情久久久久影院老熟女免费 | 一本久久a久久精品vr综合| 久久免费视频1|