亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? div_a7m.s

?? arm嵌入式系統開發--軟件設計與優化隨書源代碼。開發環境c。基本運算優化部分。
?? S
字號:
;// ____________________________________________________________________
;//
;// Copyright (c) 2003, Andrew N. Sloss, Dominic Symes, Chris Wright
;// All rights reserved.
;// ____________________________________________________________________
;// 
;// NON-COMMERCIAL USE License
;// 
;// Redistribution and use in source and binary forms, with or without 
;// modification, are permitted provided that the following conditions 
;// are met: 
;//
;// 1. For NON-COMMERCIAL USE only.
;// 
;// 2. Redistributions of source code must retain the above copyright 
;//    notice, this list of conditions and the following disclaimer. 
;//
;// 3. Redistributions in binary form must reproduce the above 
;//    copyright notice, this list of conditions and the following 
;//    disclaimer in the documentation and/or other materials provided 
;//    with the distribution. 
;//
;// 4. All advertising materials mentioning features or use of this 
;//    software must display the following acknowledgement:
;//
;//    This product includes software developed by Andrew N. Sloss,
;//    Chris Wright and Dominic Symes. 
;//
;//  THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS ``AS IS'' AND ANY 
;//  EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
;//  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 
;//  PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE CONTRIBUTORS BE 
;//  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, 
;//  OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 
;//  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, 
;//  OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 
;//  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR 
;//  TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 
;//  OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
;//  OF SUCH DAMAGE. 
;//
;// If you have questions about this license or would like a different
;// license please email : andrew@sloss.net
;//
;// Section 7.3: Division routines

        AREA    ch07_3, CODE, READONLY

        EXPORT  udiv_32by32_arm7m
        EXPORT  udiv_32by16_arm7m
        EXPORT  udiv_64by32_arm7m
        EXPORT  sdiv_32by32_arm7m
       

d       RN 0    ; input denominator d, output quotient
r       RN 1    ; input numerator n, output remainder
t       RN 2    ; scratch register
q       RN 3    ; current quotient

        ; __value_in_regs struct { unsigned q, r; }
        ;   udiv_32by32_arm7m(unsigned d, unsigned n)
udiv_32by32_arm7m
        MOV     q, #0             ; zero quotient
        RSBS    t, d, r, LSR#3    ; if ((r>>3)>=d) C=1; else C=0;
        BCC     div_3bits         ; quotient fits in 3 bits
        RSBS    t, d, r, LSR#8    ; if ((r>>8)>=d) C=1; else C=0;
        BCC     div_8bits         ; quotient fits in 8 bits
        MOV     d, d, LSL#8       ; d = d*256
        ORR     q, q, #0xFF000000 ; make div_loop iterate twice
        RSBS    t, d, r, LSR#4    ; if ((r>>4)>=d) C=1; else C=0;
        BCC     div_4bits         ; quotient fits in 12 bits
        RSBS    t, d, r, LSR#8    ; if ((r>>8)>=d) C=1; else C=0;
        BCC     div_8bits         ; quotient fits in 16 bits
        MOV     d, d, LSL#8       ; d = d*256
        ORR     q, q, #0x00FF0000 ; make div_loop iterate 3 times
        RSBS    t, d, r, LSR#8    ; if ((r>>8)>=d)
        MOVCS   d, d, LSL#8       ; { d = d*256;
        ORRCS   q, q, #0x0000FF00 ; make div_loop iterate 4 times}
        RSBS    t, d, r, LSR#4    ; if ((r>>4)<d)
        BCC     div_4bits         ;   r/d quotient fits in 4 bits
        RSBS    t, d, #0          ; if (0 >= d)
        BCS     div_by_0          ;   goto divide by zero trap
        ; fall through to the loop with C=0
div_loop
        MOVCS   d, d, LSR#8       ; if (next loop) d = d/256
div_8bits                         ; calculate 8 quotient bits
        RSBS    t, d, r, LSR#7    ; if ((r>>7)>=d) C=1; else C=0;
        SUBCS   r, r, d, LSL#7    ; if (C) r -= d<<7;
        ADC     q, q, q           ; q=(q<<1)+C;
        RSBS    t, d, r, LSR#6    ; if ((r>>6)>=d) C=1; else C=0;
        SUBCS   r, r, d, LSL#6    ; if (C) r -= d<<6;
        ADC     q, q, q           ; q=(q<<1)+C;
        RSBS    t, d, r, LSR#5    ; if ((r>>5)>=d) C=1; else C=0;
        SUBCS   r, r, d, LSL#5    ; if (C) r -= d<<5;
        ADC     q, q, q           ; q=(q<<1)+C;
        RSBS    t, d, r, LSR#4    ; if ((r>>4)>=d) C=1; else C=0;
        SUBCS   r, r, d, LSL#4    ; if (C) r -= d<<4;
        ADC     q, q, q           ; q=(q<<1)+C;
div_4bits                         ; calculate 4 quotient bits
        RSBS    t, d, r, LSR#3    ; if ((r>>3)>=d) C=1; else C=0;
        SUBCS   r, r, d, LSL#3    ; if (C) r -= d<<3;
        ADC     q, q, q           ; q=(q<<1)+C;
div_3bits                         ; calculate 3 quotient bits
        RSBS    t, d, r, LSR#2    ; if ((r>>2)>=d) C=1; else C=0;
        SUBCS   r, r, d, LSL#2    ; if (C) r -= d<<2;
        ADC     q, q, q           ; q=(q<<1)+C;
        RSBS    t, d, r, LSR#1    ; if ((r>>1)>=d) C=1; else C=0;
        SUBCS   r, r, d, LSL#1    ; if (C) r -= d<<1;
        ADC     q, q, q           ; q=(q<<1)+C;
        RSBS    t, d, r           ; if (r>=d) C=1; else C=0;
        SUBCS   r, r, d           ; if (C) r -= d;
        ADCS    q, q, q           ; q=(q<<1)+C; C=old q bit 31;
div_next
        BCS     div_loop          ; loop if more quotient bits
        MOV     r0, q             ; r0 = quotient; r1=remainder;
        MOV     pc, lr            ; return { r0, r1 } structure;
div_by_0
        MOV     r0, #-1
        MOV     r1, #-1
        MOV     pc, lr            ; return { -1, -1 } structure;
        
        
d       RN 0    ; input denominator, output quotient
r       RN 1    ; input numerator n, output remainder
sign    RN 12

        ; __value_in_regs struct { signed q, r; }
        ;   udiv_32by32_arm7m(signed d, signed n)
sdiv_32by32_arm7m
        STMFD   sp!, {lr}
        ANDS    sign, d, #1<<31       ; sign=(d<0 ? 1<<31 : 0);
        RSBMI   d, d, #0              ; if (d<0) d=-d;
        EORS    sign, sign, r, ASR#32 ; if (r<0) sign=~sign;
        RSBCS   r, r, #0              ; if (r<0) r=-r;
        BL      udiv_32by32_arm7m     ; (d,r)=(r/d,r%d)
        MOVS    sign, sign, LSL#1     ; C=sign[31], N=sign[30]
        RSBCS   d, d, #0              ; if (sign[31]) d=-d;
        RSBMI   r, r, #0              ; if (sign[30]) r=-r;
        LDMFD   sp!, {pc}
        
       

m       RN 0    ; input denominator d then (-d<<14)
r       RN 1    ; input numerator n then remainder

        ; __value_in_regs struct { unsigned q, r; }
        ;   udiv_32by16_arm7m(unsigned d, unsigned n)
udiv_32by16_arm7m
        RSBS    m, m, r, LSR#15    ; m = (n>>15) - d
        BCS     overflow_15        ; overflow if (n>>15)>=d
        SUB     m, m, r, LSR#15    ; m = -d
        MOV     m, m, LSL#14       ; m = -d<<14
        ; 15 trial division steps follow
        ADDS    r, m, r            ; r=r-(d<<14); C=(r>=0);
        SUBCC   r, r, m            ; if (C==0) r+=(d<<14)
        ADCS    r, m, r, LSL #1    ; r=(2*r+C)-(d<<14); C=(r>=0);
        SUBCC   r, r, m            ; if (C==0) r+=(d<<14)
        ADCS    r, m, r, LSL #1    ; ... and repeat ...
        SUBCC   r, r, m
        ADCS    r, m, r, LSL #1
        SUBCC   r, r, m
        ADCS    r, m, r, LSL #1
        SUBCC   r, r, m
        ADCS    r, m, r, LSL #1
        SUBCC   r, r, m
        ADCS    r, m, r, LSL #1
        SUBCC   r, r, m
        ADCS    r, m, r, LSL #1
        SUBCC   r, r, m
        ADCS    r, m, r, LSL #1
        SUBCC   r, r, m
        ADCS    r, m, r, LSL #1
        SUBCC   r, r, m
        ADCS    r, m, r, LSL #1
        SUBCC   r, r, m
        ADCS    r, m, r, LSL #1
        SUBCC   r, r, m
        ADCS    r, m, r, LSL #1
        SUBCC   r, r, m
        ADCS    r, m, r, LSL #1
        SUBCC   r, r, m
        ADCS    r, m, r, LSL #1
        SUBCC   r, r, m
        ; extract answer and remainder (if required)
        ADC     r0, r, r           ; insert final answer bit
        MOV     r,  r0, LSR #15    ; extract remainder
        BIC     r0, r0, r, LSL #15 ; extract quotient
        MOV     pc, lr             ; return { r0, r }
overflow_15                        ; quotient oveflows 15 bits
        LDR     r0, =0x7FFF        ; maximum quotient
        MOV     r1, r0             ; maximum remainder
        MOV     pc, lr             ; return { 0x7fff, 0x7fff }

m       RN 0    ; input denominator d, -d
r       RN 1    ; input numerator (low), remainder (high)
t       RN 2    ; input numerator (high)
q       RN 3    ; result quotient and remainder (low)

        ; __value_in_regs struct { unsigned q, r; }
        ;   udiv_64by32_arm7m(unsigned d, unsigned long long n)
udiv_64by32_arm7m
        CMP     t, m            ; if (n >= (d<<32))
        BCS     overflow_32     ;   goto overflow_32;
        RSB     m, m, #0        ; m = -d
        ADDS    q, r, r         ; { [r,q] = 2*[r,q]-[d,0];
        ADCS    r, m, t, LSL#1  ;   C = ([r,q]>=0); }
        SUBCC   r, r, m         ; if (C==0) [r,q] += [d,0]
        GBLA    k               ; the next 32 steps are the same
k       SETA    1               ; so we generate them using an
        WHILE   k<32            ; assembler while loop
          ADCS  q, q, q         ; { [r,q] = 2*[r,q]+C - [d,0];
          ADCS  r, m, r, LSL#1  ;   C = ([r,q]>=0); }
          SUBCC r, r, m         ; if (C==0) [r,q] += [d,0]
k         SETA  k+1
        WEND
        ADCS    r0, q, q        ; insert final answer bit
        MOV     pc, lr          ; return { r0, r1 }
overflow_32
        MOV     r0, #-1
        MOV     r1, #-1
        MOV     pc, lr          ; return { -1, -1 }
        
        END

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人免费av在线| 欧美日韩久久久一区| 色诱视频网站一区| 欧美另类变人与禽xxxxx| 久久天堂av综合合色蜜桃网| 亚洲欧美日韩精品久久久久| 久久国产欧美日韩精品| 91麻豆成人久久精品二区三区| 欧美女孩性生活视频| 亚洲欧洲精品一区二区三区不卡| 日韩成人免费在线| 色综合中文字幕国产 | 午夜日韩在线观看| 成人妖精视频yjsp地址| 日韩欧美精品在线视频| 亚洲成人综合网站| 91亚洲国产成人精品一区二区三| 精品久久久久久最新网址| 亚洲一区二区三区激情| www.欧美日韩国产在线| 久久一区二区三区国产精品| 日本成人在线不卡视频| 欧美中文字幕亚洲一区二区va在线| 亚洲国产精品国自产拍av| 久久国产精品无码网站| 91麻豆精品国产91久久久使用方法 | 在线观看亚洲一区| 国产精品美女久久久久aⅴ| 国产一区二区三区在线看麻豆 | 99r国产精品| 欧美国产乱子伦| 国产酒店精品激情| 久久精品一区蜜桃臀影院| 精品一区二区三区在线视频| 日韩一级大片在线| 奇米精品一区二区三区四区| 7777精品伊人久久久大香线蕉完整版 | 中文字幕一区三区| av在线免费不卡| 国产精品久久三| 成人晚上爱看视频| 中文字幕一区二区三区av| 成人污污视频在线观看| 国产精品美女一区二区在线观看| 国产.精品.日韩.另类.中文.在线.播放| 欧美不卡视频一区| 国产美女在线精品| 中文字幕国产精品一区二区| 不卡电影免费在线播放一区| 亚洲色欲色欲www在线观看| 91在线精品一区二区| 亚洲精品国产无套在线观| 日本韩国欧美国产| 天天爽夜夜爽夜夜爽精品视频| 91精品久久久久久蜜臀| 精品一区二区三区影院在线午夜| 精品播放一区二区| 波多野结衣的一区二区三区| 亚洲柠檬福利资源导航| 欧美三区免费完整视频在线观看| 奇米精品一区二区三区在线观看一| 欧美成人乱码一区二区三区| 成人午夜碰碰视频| 亚洲国产aⅴ成人精品无吗| 欧美成人精品福利| 粉嫩av亚洲一区二区图片| 亚洲精品国产成人久久av盗摄| 欧美片在线播放| 风间由美一区二区三区在线观看| 亚洲精品国产高清久久伦理二区| 日韩欧美国产一区在线观看| 成人午夜视频免费看| 成人动漫中文字幕| 天天做天天摸天天爽国产一区 | 欧美午夜精品一区| 精品无人区卡一卡二卡三乱码免费卡 | 国产精品久久久久影院色老大| 欧美在线不卡视频| 国产激情视频一区二区在线观看 | 国产亚洲综合在线| 在线观看欧美精品| 国产一区二区三区四区五区美女 | 经典三级视频一区| 亚洲自拍另类综合| 国产偷国产偷精品高清尤物| 欧美日韩精品久久久| 国产成人免费视频网站高清观看视频 | 久久精品欧美日韩精品| 欧美日韩视频在线第一区| 国产高清不卡一区| 日韩国产欧美三级| 亚洲精品美腿丝袜| 中文字幕不卡三区| 精品蜜桃在线看| 91精品国产综合久久久蜜臀粉嫩| 99在线热播精品免费| 国产一区二区91| 蜜臀91精品一区二区三区 | 日本韩国精品在线| 成人免费视频视频| 国产一区欧美二区| 久久精品国产一区二区| 亚洲国产美国国产综合一区二区| 国产精品进线69影院| 久久久精品人体av艺术| 日韩一区二区三区视频在线| 欧洲精品在线观看| 91视频国产观看| 成人午夜视频免费看| 国产精品一品二品| 激情六月婷婷久久| 久久电影网电视剧免费观看| 亚洲一区二区精品3399| 一区二区国产盗摄色噜噜| 国产精品电影院| 中文一区二区在线观看| 中文字幕欧美区| 国产欧美一区二区精品性色超碰 | 青青草91视频| 日本视频中文字幕一区二区三区| 亚洲影院在线观看| 亚洲一区二区三区激情| 天堂va蜜桃一区二区三区漫画版| 亚洲最新在线观看| 亚洲一二三四在线| 亚洲成人免费视频| 日韩和欧美的一区| 视频一区视频二区在线观看| 日韩中文字幕一区二区三区| 亚洲一二三区不卡| 亚洲成a人v欧美综合天堂| 亚洲国产精品久久久久婷婷884 | 色婷婷av一区二区三区之一色屋| av在线不卡网| 在线中文字幕一区二区| 欧美特级限制片免费在线观看| 欧美亚洲精品一区| 91精品国产综合久久精品图片 | 欧美曰成人黄网| 在线视频一区二区三区| 欧美色电影在线| 日韩美女主播在线视频一区二区三区| 日韩一级高清毛片| 国产欧美日韩久久| 亚洲欧美另类久久久精品2019| 亚洲九九爱视频| 日韩不卡在线观看日韩不卡视频| 久久精品国产久精国产爱| 国产乱码精品一区二区三区五月婷 | 色综合视频在线观看| 欧美亚州韩日在线看免费版国语版| 欧美日韩不卡在线| 久久久精品综合| 亚洲免费色视频| 日本中文字幕一区二区视频| 国产在线不卡一区| 色婷婷av一区二区| 日韩欧美综合在线| 最新不卡av在线| 日韩av午夜在线观看| 成人丝袜视频网| 在线中文字幕一区| 亚洲国产日韩综合久久精品| 美女精品自拍一二三四| 97久久超碰国产精品电影| 欧美人妖巨大在线| 国产精品另类一区| 无码av免费一区二区三区试看| 国产乱理伦片在线观看夜一区| 色噜噜夜夜夜综合网| 精品免费视频.| 亚洲一区二区三区激情| 国产精品中文字幕日韩精品| 欧美色手机在线观看| 中文字幕免费不卡在线| 日本成人在线电影网| 色婷婷激情一区二区三区| 久久综合色婷婷| 日韩高清在线一区| 色女孩综合影院| 日本一区二区不卡视频| 精品亚洲aⅴ乱码一区二区三区| 在线观看免费一区| 国产精品五月天| 精品中文字幕一区二区| 欧美日韩电影在线| 亚洲精品成人在线| 成人avav在线| 2021中文字幕一区亚洲| 天堂av在线一区| 欧美性大战久久久| 综合中文字幕亚洲| 北岛玲一区二区三区四区| 久久久高清一区二区三区| 麻豆中文一区二区| 91精品在线一区二区| 午夜精品福利一区二区蜜股av| 91免费视频网| 亚洲欧美在线高清| av成人老司机|