CPC Rulez https://cpcrulez.fr/forum/ |
|
Asm inline dans sdcc ?!? (docs?astuces?!?,pffff) https://cpcrulez.fr/forum/viewtopic.php?f=4&t=4843 |
Page 1 sur 1 |
Auteur : | exolon [ 11 Avr 2012, 18:40 ] |
Sujet du message : | Asm inline dans sdcc ?!? (docs?astuces?!?,pffff) |
Salut, Je commence à m'amuser avec sdcc et le kit de dev C pour le cpc6128 que j'ai trouvé sur cpcmania Je me suis dis, tiens ce sera drôle d'adapter un tunnel 2d en c++ sous windows sur des couleurs en 32bits , dans un cpc a 64k de ram (si si). Donc voilà , premier problème , la gestion de la vidéo par le cpc est pas des plus évidentes et semble très gourmande en temps cpu, surtout quand on adresse des pixels isolés... Bon, je vous cache pas que ma première version d'un bête remplissage écran, n'a rien à envier a la commande fill du cpc (quoique si, elle est presque plus lente..) Bref , j'ai trouvé sur cpcwiki une routine asm qui semble plus rapide que mon implémentation en c.. Mais bon, là je galère sur la syntaxe de sdcc pour l'asm inline, notamment le passage de paramètre.. ca c'est le code asm pour tracer un point : FPLOT LD A, L ;A = Lowbyte Y AND %00000111 ;isolate Bit 0..2 LD H, A ;= y MOD 8 to H XOR L ;A = Bit 3..7 of Y LD L, A ;= (Y\8)*8 to L LD C, A ;store in C LD B, &60 ;B = &C0\2 = Highbyte Screenstart\2 ADD HL, HL ;HL * 2 ADD HL, HL ;HL * 4 ADD HL, BC ;+ BC = Startaddress ADD HL, HL ;of the raster line SRL E ;calculate X\2, because 2 pixel per byte, Carry is X MOD 2 LD C, %10101010 ;Bitmask for MODE 0 JR NC, NSHIFT ;-> = 0, no shift SHIFT LD C, %01010101 ;other bitmask for right pixel NSHIFT ADD HL, DE ;+ HL = Screenaddress LD A, (CMASK) ;get color mask XOR (HL) ;XOR screenbyte AND C ;AND bitmask XOR (HL) ;XOR screenbyte LD (HL), A ;new screenbyte __endasm; sdcc me jette quand il compile l'asm , je crois qu'il n'aime pas les labels en plus Si quelqu'un à des infos complèmentaires .. J'ai finalement trouvé la doc complète de sdcc qui explique comment le faire |
Page 1 sur 1 | Le fuseau horaire est UTC+1 heure |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |