vady a zavady syntaxe roznych asm, was: hlasovy syntezator do jednocipu

Pavel Hudecek edizon na seznam.cz
Sobota Únor 18 10:38:35 CET 2017


Do té doby jsem znal asm pro Z80 - ld, paměť je (adresa), x86 - mov, paměť 
je [adresa], 51 - mov, paměť je asi @adresa. A ještě jsem trochu přičichl k 
Pic, ale to se mi celkově nelíbilo a naštěstí to po mně nikdo nechtěl. Tedy 
s tou 51 jsem taky moc nedělal, protože jsem krátce po tom objevil, že Atmel 
dělá jakési AVR a to je lepší a často má shodný pinout s nějakou 51, takže 
51 je asi zastaralá a AVR je jeho moderní náhrada.

Byl jsem tedy zvyklý na to, že assemblery jsou v podstatě stejné, liší se 
jen názvama, počty a (ne)univerzalitou registrů a pár písmenky ohledně 
adresování. Z x86 jsem byl taky zvyklý, že do programu v Pascalu a později v 
C můžu vložit asm a že v něm můžu napsat věci, jako "mov eax,proměnná" a ono 
to pak funguje.

Pak jsem přišel k AVR, mělo oproti 51 mnohem lepší HW, ale ten asm... Ale 
bylo to řešitelné: Napsal jsem si vbscript, který překládal syntaxi x86 na 
AVR, takže jsem psal jako pro x86. Pak jsem se začal učit C a narazil jsem 
na to, že musím vědět, jak překladač proměnnou uložil, abych zjistil zda 
"mov r0,proměnná", nebo "ld r0,proměnná" a že na straně překladače je s tím 
asi nějaký problém, takže ani jedna možnost nefunguje (v tehdejším 
codevisionu, netuším zda např. dnešní gcc je na tom lépe). V Builderu jsem 
mohl použít třeba "add edx, es:[pointer+4*eax+ecx]" a žádný problém s 
překladem (tedy až na to, že bych to ES stejně nemohl ve win98 smysluplně 
využít).

Ještě k číslům: Ano, syntaxe hex se také často liší, ale nedovedu si 
představit, jak by tomu pomohlo více názvů stejných instrukcí.

Ovšem co je pro mě nepochopitelné: Syntaxe osmičkové soustavy založená na 
tom, že číslo začíná 0. To je spíš zákeřné škodidlo, než užitečná věc: 
Praktické využití jsem nikdy neviděl, přesto to musím např. učit děti na 
kroužku a stejně občas udělají chybu ve stylu "když z 1043 odmažu 1, dostanu 
43".

PH

-----Původní zpráva----- 
From: konfera na efton.sk

> Ale bylo to hrozný peklo, psal jsem to v asm a nadával pøi tom na jeho
autora, proto¾e na rozdíl od x86, kde MOV udìlá ve¹keré datové pøenosy, v
> tomhle asm má tatá¾ operace nejmíò 5 názvù a podobnì je to i s ADD, SUB, 
> ...
> asi proto¾e autor byl línej analyzovat operandy.

Nepisete to priamo ale usudzujem, ze ide o AVR asembler v1 alebo v2 priamo 
od Atmelu.

Dovo je skor ten, ze autor (A alebo V, ale skor obaja) mali rozsiahle a 
traumaticke skusenosti s mnohymi asemblermi.

Az sa dostanete do situacie, kde budete pracovat sucasne s asemblermi na 
rozne procesory, kde sa znaky ako $, # ci @ pouzivaju na oznacenie 
adresovacieho rezimu, alebo priameho operandu, alebo ofsetu alebo 
sestnastkoveho cisla ci ako nejaky iny modifikator operandu, a u kazdeho 
asembleru inak, tak pochopite.

No a peklo ma meno PIC. 



Další informace o konferenci Hw-list