C/asm kerdes

Andras Tantos andras_tantos at yahoo.com
Fri Feb 6 17:41:15 CET 2004


Hi!

> > Amit meg tehetsz, hogy irsz egy mini programot, ami atalakitja a
generalt
> > ASM forrast, atkodolja az adatokat 24-bitre es kiir egy masik ASM
forrast.
> > Bar ilyen erovel megcsinalhatod az egesz szamitast benne, es nem kell a
C
> > konstans-kiertekeleset erre felhasznalni.
>
> Igen, Gabor is ezt javasolta. Ez kevesbe tetszik, es nincs is C a gepemen,
> csak AVR-hez :) Na jo pascal van, abban is meg lehetne csinalni.
> Nem olyan nagy gond a 24/32bit, csak nehany bajt megy pocsekba, a
> lassulas is elenyeszo.

Hulye vagyok, persze, hogy meg lehet csinalni C-ben:

typedef struct {
    unsigned char Low;
    unsigned char Mid;
    signed   char High;
} int24;

#define INIT_INT24(aValue) {                  \
    ((unsigned long )(aValue)) & 0xff,        \
    (((unsigned long )(aValue)) >> 8) & 0xff, \
    (((signed long)(aValue)) >> 16) & 0xff }

int24 Data[] = {
    INIT_INT24(0.5456 * 1024),
    INIT_INT24(0.798 * 1024),
    INIT_INT24(0.125 * 1024),
    INIT_INT24(0.4378 * 1024),
};

Ebbol ez lesz az en GCC-mmel:

 .file "int24.c"
.globl _Data
 .data
_Data:
 .byte 46
 .byte 2
 .byte 0
 .byte 49
 .byte 3
 .byte 0
 .byte -128
 .byte 0
 .byte 0
 .byte -64
 .byte 1
 .byte 0

Azert vigyazz a data-packing meg alignment meg hasonlo dolgokra, mert lehet
am, hogy nem pont ugy fogja a fordito kiosztani a strukturat meg a
strukturatombot, ahogy te szeretned. Ellenorizd le hasznalat elott!

> > Processzor/fordito fuggo. Megosztod a reszleteket?
>
> En is csak ennyit tudok. Megnezegettem hogy mit forditott a C-bol, es
> probaltam rajonni a lenyegre. Meg alaposabban megvizsgalni nem volt sem
> idom, sem kedvem... Egyebkent is hulyeseg asm-bol hivni a C-t, de most
> pont jol jott volna. Mar megoldottam mashogy, ahogy javasoltad.

Ezt azt hiszem felre ertetted. A kerdes: milyen proci, milyen fordito. Csak
ezek ismereteben lehet a kerdesedre valaszolni. (Ha jol olvastam a sorok
kozott, akkor AVR a proci. Ehhez abszolut nem ertek, de talan majd valaki
mas...)

Udv,
Tantos Andras
<http://andras.tantos.homedns.org>



More information about the Elektro mailing list