1. Mistä saisi x86:n hardware-keskeytyslistan? Jonkun mahdollisimman selkeän ja missä olisi ohjeita ("tälle int:lle ei voi antaa lukua suoraan, pitää siirtää rekisterin kautta" yms.)
2. Mikä on helpoin tapa saada asm-koodinpätkät toimimaan c++-ohjelmassa?
Erityisesti ääneen ja lisälaitteisiin (usb-härvelit,koskettimistot...) liittyviä keskeytyksiä tarvitaan.
Tuohon kakkoseen voin sanoa, että jos käytössäsi on inline assemblyä tukeva kääntäjä (aika harva varmaan on tukematta?), niin yksinkertaisin keino on käyttää sitä. Toinen apu on asmifunktioiden linkittäminen C++-ohjelmaan linkkerivaiheessa. Eli koodaat asmifunktiot valmiiksi omaan tiedostoonsa ja jaat nämä C++-koodisi kanssa.
USB-härveleihin liittyviä BIOSin keskeytyksiä? Voi olla aika hiljaista, ellei puhuta näppiksestä, hiirestä, USB-tikusta ja muusta peruskaurasta mitä PC:n biosit oikeasti jopa tukee. Mutta silloin ohjelman kannalta käsittelet vaan näppistä/hiirtä/massamuistia, ja se, että kyseessä on USB on epäoleellista.
Jos et tarkoittanut BIOSin keskeytyksiä, niin sitten olisi varmaan relevanttia tietää käyttis ja mahdollinen USB-pinta..
Tukeeko dev-c++ inline assemblyä?
No tällä hetkellä ei muuta tarvitse kuin saada koskettimisto toimimaan... Ohjelmat tunnistavat sen midi-koskettimistona, mutta se on usb-liitännässä kiinni... Sillä usb:lla ei varmaan sitten tee mitään, kun ohjelmatkin ettii tietonsa muualta.
Käyttöjärjestelmänä win2k
EDIT: Missä tiedostomuodossa linkitettävän tiedoston pitää olla?
Dev-c++ ei ole kääntäjä, vaan IDE (Integrated Development Environment, ts. kehitysympäristö), ja sillä ei ole mitään väliä koodin kääntymiseen tukeeko ide jotain vai ei. Dev-c++ käyttää kääntäjänään GCC:tä, ja gcc kyllä tukee inline-assemblyä, mikäli sitä välttämättä haluat käyttää.
"No tällä hetkellä ei muuta tarvitse kuin saada koskettimisto toimimaan... Ohjelmat tunnistavat sen midi-koskettimistona, mutta se on usb-liitännässä kiinni... Sillä usb:lla ei varmaan sitten tee mitään, kun ohjelmatkin ettii tietonsa muualta.
Käyttöjärjestelmänä win2k "
Tälläin "sivusilmällä" kysymys. Et siis voi käyttää midi-koskettimia, koska se on usb-portissa kiinni? En tiedä Win2k:sta, mutta XP:ssä usb-midi-kiipparit toimii ihan vain ajurien asennuksella (tai jopa ilman, XP:ssä ainakin on jonkinlainen usb-midi-usb -mapperi). Ja mitä teet koskettimilla jos et ohjaa midi-ohjelmia?
Itse pistin koskettimet kiinni usb-porttiin, avasin cubasen ja aloin rokkaamaan :)
Mitenkäs se inline sitten käytännössä toimii? joidenkin sulkeiden sisällä?
Siis kyllä se koskettimisto toimii, mutta se tässä on aiheena että sen saa toimimaan omassa ohjelmassakin, eli löytää tarvittavat arvot keskeytyksillä, rekistereistä tai jostain.
Koska midiä tukevat ohjelmat löytävät koskettimiston (joka on usb:ssä), ajattelin että w2k siirtää tiedot usb-liitännästä sinne mistä midi-in-tiedot löytää (onko tämä se usb-midi-usb-mapperi?)
Ellei sekavista puheista saa selvää, voin yrittää selventää...
Kun et kerran ole laite-ajuria ohjelmoimassa Win2k:ssa, niin voit aivan samantien unohtaa nuo keskeytykset etkä tarvitse assembleriakaan yhtään mihinkään (saahan sitäkin toki käyttää, mutta hyöty on olematon).
Käytä Windowsin MIDI APIa.
Kai se WinApi täytyy vihdoin opetella... Onko netissä jossain hyvää ja helposti ymmärrettävää opasta?
Moikka KoodiNoppa!
Tsekkaa nämä ja kaikki linkit niin löydät purtavaa
GCC käyttää oletuksena AT&T-syntaksin inline assemblyä, omasta mielestäni se on aivan kauhea verrattuna Intel-syntaksiin (joo, enhän mä ole AT&T-syntaksiin edes kunnolla tutustunut, mutta kauhealta se ainakin näyttää).
Inline Assembly On GCC using Intel Syntax
Ja kun sitä WinAPI-opasta kyselit, itse pääsin hyvin alkuun WinAPI:n kanssa tällä oppaalla:
theForger's Win32 API Tutorial
Olen samaa mieltä at&t:stä... Onneksi en tarvitse assemblyä kovin monta riviä (toivottavasti).
Kiitos kaikille vastauksista :)
Ei se AT&T:n syntaksi mitenkään outoa ole. Se vain on eri kulttuuri. Ranskassakin syödään etanoita.
Tällainen taikakalu voi olla avuksi, jos sen erilaisuus häiritsee.
http://www.niksula.cs.hut.fi/~mtiihone/
Tämä on mahdollisesti uudempi versio.
http://dir.filewatcher.com/d/OpenBSD/3.5/sparc/
Nämä voivat kyllä olla vähän työläitä saada toimimaan Windowsissa.
http://www.borg.com/~jglatt/tech/winapi.htm
Tuolta löytyy varmasti sopiva tapa ottaa vastaan midi-viestejä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.