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