Ha! No to po kolei:
@Tygrys: nie, nie próbowałem, pewnie się do końca nie da, w czystym C nie ma: rotacji przez carry, odczytu rejestru R czy możliwości użycia "halt","ei","di" itp. Ale jak będzie chwila to sprawdzę.
@matofesi: narzutów kompilatora/runtime nie ma, SDCC generuje dość przejrzysty i czytelny kod. Do tego bardzo zwarty (szczególnie w porównaniu z z88dk). Poza tym zgadzam się, że pisanie w czystym C na takie maszyny jak spectrum czy jakieś mikrokontrolery mija się z celem. Po to twórcy kompilatora opracowali szereg elementów związanych z integracją z assemblerem czy nawet z samym procesorem, żeby tego używać.
@Gryzor: nie wszystkie programy wymagają precyzyjnego liczenia taktów. Poza tym, dla mnie C zawsze było językiem niskiego poziomu (szczególnie w kontekście obecnych języków typu Groovy, Ruby
) i odpowiednio układając kod da się osiągnąć dość dobre efekty. Do tego krytyczne elementy wrzuca się do assemblera i jest jeszcze lepiej. Druga rzecz to framework. Taki powstał dla z88dk - splib2/sp1 - czy jest optymalny, nie wiem, ale sporo gier z jego użyciem zostało napisanych. Niestety zajmuje około 12k.
@Pyza^Illusion: Tak prosto nie jest, jest cała dziedzina nauki dotycząca budowy kompilatorów i optymalizacji kodu wynikowego. Więc nie jest to tylko zbiór procedur. Kontrola rzeczywiście nie jest jakaś wybitnie duża, natomiast efekt w postaci skompilowanego do asma kodu jest dostępny i bardzo czytelny, dzięki czemu można eksperymentować.
Ja się generalnie zgadzam, że w assemblerze jest najlepiej. Mi się już nie chce