[an error occurred while processing this directive] [an error occurred while processing this directive]
Извольте(+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
[an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive]

Отправлено AlexD 10 февраля 2002 г. 18:17
В ответ на: А еще сделайте массив int , и в АВРе начнется песня с загрузко матемой указателей. AVR - типичный пример хорошей рекламной компании. Хотя он (AVR) мне нравится прямотой и понятностью. Полностью согласен с утверждением, чтатику лучше отрабатывать на АВР.а Вся математика, отправлено Jedi 10 февраля 2002 г. 17:33

#include <io8515.h>

signed int Tab[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
signed long int q;

void main(void){

signed int *point=Tab;
char i=16;
signed long int s=0;
do{
s+=*(point++);
}while(--i);
q=s;
}


##############################################################################
# #
# IAR Atmel AVR C/EC++ Compiler V2.26C/WIN 10/Feb/2002 21:10:55 #
# Copyright 1996-2001 IAR Systems. All rights reserved. #
# #
# Source file = C:\Мои документы\Umoril.c #
# Command line = -v1 -ms -o "C:\Мои документы\Debug\Obj\" -I #
# "C:\PROGRAM FILES\IAR SYSTEMS\EW23_226C\avr\SRC\CLIB\IN #
# C\" -lCN "C:\Мои документы\Debug\List\" -lA "C:\Мои #
# документы\Debug\List\" -e -y --initializers_in_flash #
# -s9 --debug "C:\Мои документы\Umoril.c" #
# List file = C:\Мои документы\Debug\List\Umoril.lst #
# Object file = C:\Мои документы\Debug\Obj\Umoril.r90 #
# #
# #
##############################################################################

1 #include
2

\ In segment NEAR_I, align 1, keep-with-next
\ 00000000 REQUIRE `?`
3 signed int Tab[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
\ signed int __near Tab[16];
\ Tab:
\ 00000000 DS 32
\ 00000020 REQUIRE `?`
4 signed long int q;
\ signed long __near q;
\ q:
\ 00000020 DS 4
\ 00000024 REQUIRE `?`
5

\ In segment CODE, align 2, keep-with-next
6 void main(void){
7
8 signed int *point=Tab;
\ __nearfunc void main();
\ main:
\ 00000000 .... LDI R30,LOW(Tab)
\ 00000002 .... LDI R31,(Tab) >> 8
9 char i=16;
\ 00000004 E100 LDI R16,16
10 signed long int s=0;
\ 00000006 E040 LDI R20,0
\ 00000008 E050 LDI R21,0
\ 0000000A E060 LDI R22,0
\ 0000000C E070 LDI R23,0
11 do{
12 s+=*(point++);
\ ??main_0:
\ 0000000E 9001 LD R0,Z+
\ 00000010 9011 LD R1,Z+
\ 00000012 2C21 MOV R2,R1
\ 00000014 0C22 LSL R2
\ 00000016 0822 SBC R2,R2
\ 00000018 0D40 ADD R20,R0
\ 0000001A 1D51 ADC R21,R1
\ 0000001C 1D62 ADC R22,R2
\ 0000001E 1D72 ADC R23,R2
13 }while(--i);
\ 00000020 950A DEC R16
\ 00000022 F7A9 BRNE ??main_0
14 q=s;
\ 00000024 .... LDI R30,LOW(Tab)
\ 00000026 .... LDI R31,(Tab) >> 8
\ 00000028 A340 STD Z+32,R20
\ 0000002A A351 STD Z+33,R21
\ 0000002C A362 STD Z+34,R22
\ 0000002E A373 STD Z+35,R23
15 }
\ 00000030 9508 RET

\ In segment NEAR_ID, align 1, keep-with-next
\ `?`:
\ 00000000 0001 DW 1
\ 00000002 0002 DW 2
\ 00000004 0003 DW 3
\ 00000006 0004 DW 4
\ 00000008 0005 DW 5
\ 0000000A 0006 DW 6
\ 0000000C 0007 DW 7
\ 0000000E 0008 DW 8
\ 00000010 0009 DW 9
\ 00000012 000A DW 10
\ 00000014 000B DW 11
\ 00000016 000C DW 12
\ 00000018 000D DW 13
\ 0000001A 000E DW 14
\ 0000001C 000F DW 15
\ 0000001E 0010 DW 16
\ `?`:
\ 00000020 00000000 DB 0, 0, 0, 0
16

Maximum stack usage in bytes:

Function CSTACK RSTACK
-------- ------ ------
main 0 0


50 bytes in segment CODE
6 bytes in segment INITTAB
36 bytes in segment NEAR_I
36 bytes in segment NEAR_ID

86 bytes of CODE memory (+ 6 bytes shared)
36 bytes of DATA memory

Errors: none
Warnings: none

Итого 237 циклов.
Честно говоря, всё это начинает меня утомлять, особенно Ваши голословные утверждения.
Где , например, листинг?



Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru