在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > ARM 匯編與 C 語言相互調用實驗

            ARM 匯編與 C 語言相互調用實驗

            作者: 時間:2016-11-11 來源:網(wǎng)絡 收藏
            4. 7 匯編C 語言相互調用實驗

            4. 7. 1 實驗目的

            本文引用地址:http://www.biyoush.com/article/201611/316816.htm

            閱讀S3C2410 啟動代碼,觀察處理器啟動過程;

            學會使用 MDK 集成開發(fā)環(huán)境輔助窗口來分析判斷調試過程和結果;

            學會在 MDK 集成開發(fā)環(huán)境中編寫、編譯與調試匯編和C 語言相互調用的程序。

            4. 7. 6 實驗參考程序

            1.randtest.c 參考源代碼:

            /*********************************************************************************************
            * File: randtest.c

            * Author: Wuhan R&D Center, embest
            * Desc: Random number generator demo program

            * Calls assembler function randomnumber defined in random.s

            * History:

            *********************************************************************************************/

            /*------------------------------------------------------------------------------------------*/

            /* extern function */

            /*------------------------------------------------------------------------------------------*/

            extern unsigned int randomnumber( void );

            unsigned int unRandom[10];

            /*********************************************************************************************

            * name: main

            * func: c code entry

            * para: none

            * ret: none

            * modify:

            * comment:

            *********************************************************************************************/

            int __main()

            {

            unsigned int i,nTemp;

            for( i = 0; i < 10; i++ )

            {

            nTemp = randomnumber();

            unRandom[i] = nTemp;

            }

            while(1);

            }

            2.random.s 參考源代碼:

            ;#************************************************************************************************************
            ;# File: random.s *

            ;# Author: Wuhan R&D Center, embest *
            ;# Desc: Random number generator *

            ;# This uses a 33-bit feedback shift register to generate a pseudo-randomly *

            ;# ordered sequence of numbers which repeats in a cycle of length 2^33 - 1 *

            ;# NOTE: randomseed should not be set to 0, otherwise a zero will be generated *

            ;# continuously (not particularly random!). *

            ;# This is a good application of direct ARM assembler, because the 33-bit *

            ;# shift register can be implemented using RRX (which uses reg + carry). *

            ;# An ANSI C version would be less efficient as the compiler would not use RRX. *

            ;# AREA |Random$$code|, CODE, READONLY *

            ;# History: *

            ;#*************************************************************************************************************

            ;/*------------------------------------------------------------------------------------------*/

            ;/* global symbol define */

            ;/*------------------------------------------------------------------------------------------*/

            global randomnumber

            global seed

            ;/*------------------------------------------------------------------------------------------*/

            ;/* code */

            ;/*------------------------------------------------------------------------------------------*/

            AREA BLOCK, code , readonly

            EXPORT randomnumber

            randomnumber

            ;# on exit:

            ;# a1 = low 32-bits of pseudo-random number

            ;# a2 = high bit (if you want to know it)

            ldr ip, seedpointer

            基于S3C2410 嵌入式 MDK 開發(fā)實驗與實踐――EduKit 系列叢書
            Email:[email protected] Tel:0755-25631365

            ldmia ip, {a1, a2}

            tst a2, a2, lsr #1 ;/* to bit into carry */

            movs a3, a1, rrx ;/* 33-bit rotate right */

            adc a2, a2, a2 ;/* carry into LSB of a2 */

            eor a3, a3, a1, lsl #12 ;/* (involved!) */

            eor a1, a3, a3, lsr #20 ;/* (similarly involved!) */

            stmia ip, {a1, a2}

            BX lr

            seedpointer

            DCD seed

            seed

            DCD 0x55555555

            DCD 0x55555555

            END



            評論


            技術專區(qū)

            關閉