zsuperxtreme 0 Report post Posted August 9, 2004 Wa lase aaa lagi baik guna itu omputih punye compiler... lu kalu mau bikin sampai tua pun talak siap.. lagipun aaa.. itu compiler international punye glup sudah bincang bincang kasi itu teknologi power... apa kate kita semua gabung sama itu olang lua negale kasi power lagi itu compiler yang sedia ade....wa dulu ale bikin compiler... tapi bila wa compare sama omputih punye compiler haa.. wa mau nangis... sebab wa lase wa punye compiler boleh taluk dalam tong sampah... hahaha... at least wa masih usaha...mau kasi maju itu melayu punye name Quote Share this post Link to post Share on other sites
'ra 0 Report post Posted August 9, 2004 tahniah kepada 'ra atas inisiatif yang baik ni.. Terima kasih. Sama-sama menyumbang pun apa salahnya... tapi saya sebenarnya rasa idea yg lebih baik ialah mencipta konsep dan tools yg dpt menolong menghasilkan aplikasi dgn jangkamasa lebih pantas, spt RAD tools, etc (mcm konsep webforms dlm ASP.NET)Boleh saje, janji sesiapa yang mempunyai keupayaan dan pengetahuan dalam konsep ini dapat membuat suatu 'entry-point' bagaimana nak memulakannya. Tiada peraturan utk jenis atau bentuk compiler/interpreter/tools yang ingin dihasilkan atau diilhamkan.ini cuma pendapat saya semata2, bukan nak jatuhkan semangat 'ra dsb..Tak menjadi masalah kepada saya. Itu hak anda menyuarakan pendapat sendiri. Ianya bergantung dengan penilaian semasa. Kemungkinan dalam sesuatu masa nanti, anda ingin mendalami 'root and history' kepada penghasilan compiler di kalangan kita, anda kini sudah tahu dari siapa dan dimana maklumat itu boleh diperolehi. satu lagi saya tak berapa pandai dlm low level programming, mungkin kelebihan yg dilihat dari sudut itu saya tak nampak..Di sinilah kelebihan yang tersembunyi bagi orang seperti kita yang kurang berpengetahuan mengenai bahasa mesin atau penghimpun ini. Dengan adanya perkongsian maklumat seperti di dalam forum ini, anda tinggal perlu memilih, saya ulangi, 'pilih'-lah mana-mana bahasa aturcara yang ingin anda pelajari dan bertanyalah mengenainya. Sumber pengetahuan yang berlimpah-ruah ini tersedia bagi sesiapa yang menghargainya.Dari aspek lain, dengan adanya kepelbagaian ide dan penerangan mengenai projek-projek yang berbeza, setiap ahli-ahli yang terlibat berpeluang mempelajari perkara baru dari sebelah pihak yang lain (peer learning). Katakan anda ingin memulakan dengan VB, bahasa aturcara yang mungkin anda fikirkan mudah bagi anda. Dalam masa perkembangan pembangunan projek berjalan, keperluan kepada bahasa tahap rendah seperti bahasa penghimpun/assembly timbul kerana anda perlukan kepada sesuatu activiti dalaman yang melakukan tugas yang kecil sahaja tapi amat penting kepada keseluruhannya seperti berhubung terus dengan CPU ataupun mengaktifkan beberapa bahagian MMX utk mengawal paparan grafik. Dengan perbincangan dengan kumpulan yang menjalankan tugasan menggunakan bahasa mesin, tentunya dapat membantu anda. Dalam masa yang sama mereka juga memahami kehendak pengguna bila keperluan seperti yang anda utarakan adalah kritikal. Hasil dari perbincangan kedua-dua belah pihak adalah 'win-win situation'.jealous sebenarnya tgk org rajin buat projek ni, saya satu projek hapa pun takde..Baiklah, saya cadangkan suatu ide yang mudah. Tiada paksaan untuk melakukkanya. Anggaplah sebagai hobby. Oleh kerana anda kelihatannya cederung kepada bantuan RAD dan peralatan sokongan pengaturcaraan. Anda boleh memulakan dengan cara menceritakan apakah yang ingin anda hendakkan dari sesuatu compiler/bahasa aturcara tempatan. Ceritakan ciri-ciri yang ada padanya.Dengan cara ini anda membantu diri anda membentuk ilham kepada sesuatu topik yang bersangkutan. Sementara yang lain cuba menghasilkan bahagian enjin, rangka dan sebagainya, anda dan beberapa orang yang mempunyai pandangan yang sama cuba menampilkan konsep RAD untuk pengaturcaraan buatan tempatan. Jadi bila semuanya digabungkan, kita semua mendapat satu perisian yang amat menarik dan mempunyai benchmark yang tersendiri kepada bidang pengaturcaraan di negara ini.;------------------------------------------------------------------------------------Thats why Windows/UNIX platform kiter perlukan "virtual" machine untuk run application written in Java language. Kebaikannya seperti yang kiter tau - it can run on any machine yang ader java virtual machine (jvm), tak kira ler mesin basuh ke, microwave ke, jam ke. Running applications dalam virtual machine dah tentulah ader slack sikit tang speed since vm kena interpret setiap arahan dan convert plak kepada native instructions yang difahami oleh host platform. Konsep 'Virtual Machine' yang anda tampilkan adalah suatu yang agak menarik juga sebagai usaha penghasilan VM buatan tempatan. Cuma kalau boleh kurang dependency-nya terhadap JVM. Jika ianya dapat menafaatkan CMOS pada setiap PC platform, ianya menjadi suatu OS yang tersendiri yang mempunyai aturcara VM yang terbina-dalam. Anda tentu pernah mendengar mengenai Menouet OS, Sky-OS dan sebagainya. Jika VM bercirikan tempatan ini mempunyai OS kernel nya yg tersendiri, tentunya perisianya akan berkembang dengan penggunaan aturcara VM-nya.Kernel OSnya tak perlu-lah canggihnya sangat, cukup utk mengendalikan IO dan peralatan sokongan asas. Kemudian penggunanya akan menghasilkan berbagai kecanggihan dari segi perisian dan penggunaan. Banyakkan pelajar-pelajar sekolah dan IPTA boleh dapatkan komputer yang paling murah untuk menggunakannya. Contohnya ia menyokong hardware serendah 80386 ataupun kalau nak cabaran yang lebih, turut menyokong cip 8088. Maka revolusi perkomputer di negara ini 'ditulis semula' sejarahnya. Kita akan lihat kanak-kanak 10 tahun memasang cip 8088 pada basikal mereka untuk mengawal berbagai 'gadget' mengikut imaginasi mereka disamping mempelajari aturcara ringkas menggunakan VM seperti ini. Cip-cip 8088, 80286 dan 80386, aku rasa dah tak de harga lagi. budak boleh dapat kat tempat buang sampah atau pun kedai elektronik yang menjual bahagian-bahagian komputer lama sebagai bahan re-cycle untuk transistor, resistor, led dan sebagainya dengan harga bawah 10 ringgit.fasm memang sesuai jadik back-end compiler sebab dia ader multipass assembler dan bleh optimize asm code (not modify it!) dengan lebih baikIa juga akan membantu bagi menyelesaikan masalah keserasian bila FASM mula menyokong sepenuhnya Linux, BSD dan lain-lain OS.wa dulu ale bikin compiler... tapi bila wa compare sama omputih punye compiler haa.. wa mau nangis... sebab wa lase wa punye compiler boleh taluk dalam tong sampah... hahaha... at least wa masih usaha...mau kasi maju itu melayu punye nameBuat sorang-sorang, mana tak nangis punya. Sorang-sorang nak lawan ramai otai. Kalau ramai-ramai buat sama-sama, tak power pun kita cari jalan sama-sama kasi dia power... Kalau masih ade lagi serpihan-serpihan compiler ko tu, kongsilah dengan kita semua. Mana tau kan ianya boleh di teruskan dengan 'approach' yang berbeza dan lebih berjaya... Quote Share this post Link to post Share on other sites
encik pot pet 0 Report post Posted August 10, 2004 Well.. aku dengan senang hatinya bleh membantu.. fasm memang sesuai jadik back-end compiler sebab dia ader multipass assembler dan bleh optimize asm code (not modify it!) dengan lebih baik. Nanti aku balik rumah pikir pasal ni.. encik ancient one dgn senang hati bersetuju utk menolong awak dalam compiler construction..to ra':just design and publish awak punya language...kita semua akan bincang setelah 1st draft siap Quote Share this post Link to post Share on other sites
'ra 0 Report post Posted August 10, 2004 QUOTE (Ancient One @ Aug 7 2004, 03:13 PM)Well.. aku dengan senang hatinya bleh membantu.. fasm memang sesuai jadikan back-end compiler sebab dia ader multipass assembler dan bleh optimize asm code (not modify it!) dengan lebih baik. Nanti aku balik rumah pikir pasal ni..encik ancient one dgn senang hati bersetuju utk menolong awak dalam compiler construction..Sorry zeph, mungkin awak tersalah faham maksud Ancient One. Dia sedia membantu dalam penghasilan Macro Instructions FASM dalam bahasa Melayu. Dengan itu bahagian Back-End compiler sedang dalam "decision making" dan Ancient One belum putuskan lagi macam mana ia boleh dilakukan.to ra':just design and publish awak punya language...kita semua akan bincang setelah 1st draft siap Saya belum dapat sepenuhnya bentuk dan design compiler yang macam mana orang tempatan mahu. Contoh enjin asas yang saya postkan pun tiada siapa yang berminat nak terjemahkan ke dalam bahasa c/cpp ke, vb ke atau bertanya tentangnya.(sila rujuk post ini).Kalau nak satu draf secara kasar, ini dia secara amnya dan tak mengikut susunan: Pembaca Sumber Pengurusan Directive/Syntax/Keywords Penukar abjad ke nombor HEX(nombor asas enambelas) Pemproses pengiraan, FPU dan jenis-jenis data pernomboran. Pemanggil DLL/OCX/OBJ/LIB Pengurus OOP, GUI, CONSOLE, CGI, FILE, MEMORY, IO, PORT, SOCKET, OpenGL, DirectX, PRINTER, CLIPBOARD, DCOM/OLE/ACTIVEX, GDI, BITMAP, CANVAS, WIN32 CONTROLS dan sekutu dgnnya. pengurus pengkalan data (INIFILE/MYSQL/TSUNAMI/SQLITE/MDB/DBF?/XML) Penterjemah ke bahasa Mesin (Assembler -> PE,DLL,OCX atau OBJ/LIB?) IDE and sistem bantuan rekaan antaramuka pengguna (RAD). Quote Share this post Link to post Share on other sites
fatah 0 Report post Posted August 10, 2004 (edited) has been deleted by me (me sucks)hurm, sorry, saya tak mengikut perkembangan thread ni sblm niminta maaf bebanyak. my words is completely out of topics.Let me study first your threads before, it's very interesting thread i ever seen.Join sekali ek , i've something in mind after read the posts, thanks the guidences. ilmu saya masih sangat cetek Edited August 11, 2004 by fatah Quote Share this post Link to post Share on other sites
'ra 0 Report post Posted August 10, 2004 (edited) Join sekali ek , i've something in mind after read the posts, thanks the guidences. ilmu saya masih sangat cetekpheww, at last. Jawapan yang ku tunggu-tunggu akhirnya datang jua. Ko, baru saja menyebut 'magic word' (Join sekali). Tak kira ilmu setakat mana janji nak explore ilmu baru. Tak de masalah punya. Kita sama-sama belajar ek... Kalau ada nak tambah lagi, silakan. anda di alu-alukan. Edited August 11, 2004 by 'ra Quote Share this post Link to post Share on other sites
1kHz 0 Report post Posted August 11, 2004 wait a sec.. are you going going to build a programming languge or build a complete framework.. items yg awak tulis ni IMHO is very very big and maybe out of your/our capability..making a new language in it self is very difficult in my opinion, mesti tahu betul2 computer science (computer architecture, teori sains komputer), you might need to have a master degree in it.. ni kalau nak yg betul2 la, kalau just ambil language lain dan ubah kepada BM itu lain cerita.. so the list that you've post i think probably should be divided to two: language dan framework..kalau nak kejar dua2 rasanya mmg susah.. kalau nak pilih salah satu mungkin lebih feasible.. samaada develop new language, tambah sikit framework yg basic2 spt utk IO etc.. atau develop new framework, tapi based on existing language mcm C/C++, Pascal, BASIC etc.. apa yg dah dibincangkan sebelum ni nampaknya menjurus kepada option pertama..ok sekali lagi a humble opinion, dari saya yang masih kurang pengalaman ... Quote Share this post Link to post Share on other sites
'ra 0 Report post Posted August 11, 2004 wait a sec.. are you going going to build a programming languge or build a complete framework.. items yg awak tulis ni IMHO is very very big and maybe out of your/our capability..1kHz, terkejut kome? Itu baru compiler saje. Belum masuk system Linux/Unix dan pengurusan Website Open-source, version control (CSV), Forum sokongan, Upload/download management dan bug tracking/alpha & beta tester team management. Tapi secara amnya, itulah nanti yang akan dilalui. Bukan semuanya nak buat sekali dan bukan seorang yang nak buat semua tu. Tugas-tugas seperti ini harus di bahagikan mengikut kumpulan dan keupayaan mereka mencari sumber-sumber rujukkan dan penghasilan kod sumber.Ianya tak semesti dibuat dari 'scratch'. Mungkin ambil sedikit sumber compiler yang dah sedia ada dan terjemahkan kepada kod sumber yang mempunyai komen-komen dalam bahasa melayu. Contohnya, ambil beberapa perkara asas dahulu dari senarai di atas seperti:1. Pembaca sumber2. Pengurusan Directive/Syntax/Keywords3. Penukar abjad ke nombor HEX(nombor asas enambelas)5. Pemanggil DLL8. Penterjemah ke bahasa Mesin (Assembler)dan mulakan dengan syntax asas yang boleh melengkap satu contoh mudah. Contoh sumber yang saya berikan di atas saja sudah merangkumi perkara 1, 3 dan sedikit perkara 2.Perkara utama dalam menjayakan projek seperti ini adalah kemahuan. Projek ini adalah untuk 'educate' kita sendiri mencari sumber dan rujukkan melalui Internet. Kesabaran dan berpegang kepada objektif/goal adalah kunci kepada kejayaan projek seperti ini. Tiada masa dan had untuk sesuatu target itu kerana tenaga penyumbang-penyumbang melakukannya hanyalah untuk mengisi masa lapang dan mengasah bakat pengaturcaraan. Tak lupa juga yang ingin belajar mengenainya dari asas sehinggalah keperingkat selengkapnya.Pokoknya, kita merangkak dulu. Tetapi, sekurang-kurangnya kita tahu arah mana kita nak merangkak sebelum belajar berjalan. Quote Share this post Link to post Share on other sites
siti 0 Report post Posted August 11, 2004 emmm... mencanak-canak pula semangat `ra nampaknya.apa yang siti nak katakan ini hanyalah pendapat siti sahaja, kalau ada terasa ke, tersinggung ke, atau terapa-apa sahaja... siti harapkan 'ra boleh terima dengan hati terbuka ya.1. projek yang diura-urakan nampaknya terlalu besar ruang lingkupnya (tetapi masih boleh dijayakan)2. objektif utama masih belum digariskan dan requirements yang disenaraikan pula amat kabur. apa yang siti boleh katakan perkara 1-9 yang disenaraikan oleh 'ra hanya merupakan perkara-perkara sampingan sahaja (tidak penting) dan seolah-olah disediakan oleh programmer yang tidak berpengetahuan dalam pembangunan bahasa (mungkin juga pembangunan perisian biasa?)3. jangan 'set'kan target yang tidak ada kena mengena dengan pembangunan bahasa. sebagai contohnya daripada petikan 'ra sendiri tentang OpenGL, DirectX, printer, Clipboard dsb. apakah kaitan ini semua dengan pembangunan bahasa??? adakah mana-mana bahasa pengaturcaraan (java, c#, c/c++, vb...) dibina untuk menyokong benda-benda ini? pernahkah c/c++ menyebut tentang openGL dalam bahasa mereka? tetapi adakah c/c++ tidak dapat gunakan openGL? ketika bahasa c/c++ dicipta, adakah OS windows telah wujud? jadi apa sebenarnya perkara yang terlupa oleh 'ra...siti nak menyibuk banyak-banyak pun tidak boleh (dan sudah tentu tidak dialu-alukan langsung) kerana keadaan sekarang yang tidak mengizinkan (keluarga, kerja dan masa untuk siti sendiri). nak sentuh komputer pun payah sekali, apatah lagi kalau nak buat programming? Quote Share this post Link to post Share on other sites
1kHz 0 Report post Posted August 11, 2004 setuju dgn sititu la saya tanya 'ra nak buat language ke framework?Definisi framework kat sini saya maksudkan satu rangka kerja lengkap untuk membangunkan perisian, mcm .NET dan J2EE, kalau istilah ni salah tolong betulkan..Cuba bandingkan Java dengan J2EE, C# dengan .NET .... Quote Share this post Link to post Share on other sites
'ra 0 Report post Posted August 11, 2004 (edited) emmm... mencanak-canak pula semangat `ra nampaknya.visi saya semakin jelas dan kebanyakkan apa yang saya perkatakan sebelum ini telah disokong oleh fakta-fakta yang baru saya temui berkaitan pembinaan beberapa buah compiler melalui pemerhatian saya secara kasar pada kod sumbernya. Hanya perlu diulangi sekali lagi untuk mendapatkan overall picture most common used in compilation methods.1. projek yang diura-urakan nampaknya terlalu besar ruang lingkupnya (tetapi masih boleh dijayakan)Ia seperti yang telah saya jelaskan bagaimana ia boleh dilaksanakan pada kenyataan saya yang terdahulu. Ianya adalah merujuk kepada 'teamwork'.2. objektif utama masih belum digariskan dan requirements yang disenaraikan pula amat kabur. apa yang siti boleh katakan perkara 1-9 yang disenaraikan oleh 'ra hanya merupakan perkara-perkara sampingan sahaja (tidak penting) dan seolah-olah disediakan oleh programmer yang tidak berpengetahuan dalam pembangunan bahasa (mungkin juga pembangunan perisian biasa?)Saya telah berterus-terang pada awal-awal kenyataan saya lagi bahawa saya tiada pendidikkan formal dalam ITC. Sudah pasti tiada pengalaman langsung membangunkan perisian bahasa aturcara. Kebanyakkan pengalaman adalah pengguna dan menguji sendiri satu atau pun dua compiler. Kalau projek ini menjadi kenyataan, mungkin ianya yang pertama bagi saya.Mungkin kekaburan yang siti hadapi adalah lebih kepada pandangan siti sendiri. Siti seolah-olah mengharapkan sesuatu yang tidak atau belum disentuh di dalam topik ini. Apa salahnya siti jelaskan apa yang siti harapkan jika projek ini mula berjalan dan memperlihatkan tapak asasnya. 3. jangan 'set'kan target yang tidak ada kena mengena dengan pembangunan bahasa. sebagai contohnya daripada petikan 'ra sendiri tentang OpenGL, DirectX, printer, Clipboard dsb. apakah kaitan ini semua dengan pembangunan bahasa??? adakah mana-mana bahasa pengaturcaraan (java, c#, c/c++, vb...) dibina untuk menyokong benda-benda ini? pernahkah c/c++ menyebut tentang openGL dalam bahasa mereka? tetapi adakah c/c++ tidak dapat gunakan openGL? ketika bahasa c/c++ dicipta, adakah OS windows telah wujud? jadi apa sebenarnya perkara yang terlupa oleh 'ra...Siti, siti, siti. Saya bukan nak buat bahasa pertuturan baru. Saya ingin melihat penghasilan perisian bahasa aturcara Melayu yang mudah. Garis kasar yang saya berikan itu hanya draft kasar. Perkara pokok dalam topik ini lebih tertumpu dalam point saya nombor dua (2. Pengurus Directive/Syntax/Keywords). Tetapi tidak dapat tidak subjek OOP atau wrapper untuk OpenGL/DirectX/Printer/Clipboard akan di sentuh juga. Cuba bayangkan seorang pengguna komplen "hey apa ni? simple printing objek pun tak boleh buat. Saya tak ade masa nak re-inventing the wheel untuk printing simple thing. Buang masa saja. lebih baik saya pakai dos command: copy con lpt1. lagi senang..."Saya sudah menjangkakan the worse case dalam hal ini. Jadi lebih baik saya gariskan beberapa perkara yang terpaksa di sentuh tetapi bukan pada peringkat awal. Adakah saya perlu mengikut bahasa aturcara lain? Itu tak pasti. Siti silalah beritahu saya apa yang saya lupa ataupun yang belum saya sentuh lagi secara teori. Objektif saya yang paling utama ialah compiler yang mengikut corak pemikiran dan kefahaman orang tempatan. Lagi simple compiler tu, lebih baik dan membantu pelajar2 dan pengguna komputer biasa membina perisian mudah mengikut keperluan kepada penyelesaian ringkas masalah tertentu.apa yang siti nak katakan ini hanyalah pendapat siti sahaja, kalau ada terasa ke, tersinggung ke, atau terapa-apa sahaja... siti harapkan 'ra boleh terima dengan hati terbuka ya.Saya tidak terasa atau tersinggung mengenai pendapat siti dan juga ahli forum yg lain jika mempunyai pendapat yang berbeza. Bahkan saya mengalu-alukannya. Dan saya akan cuba sedaya upaya menerangkannya dan memahami secara mendalam setiap pendapat yang diberikan. Sayangnya, siti seorang yg sibuk, kalau tidak, tentunya input2 dari siti dapat membantu dalam hal-hal yg bersangkutan dengan 'simplicity' dan 'effectiveness'. Nota kaki:------------Oh ya, hampir terlupa lak. Saya baru selesai menterjemah satu compiler mudah untuk mengendali 'string' dari Dev+cpp ke RapidQ basic. Baru saje selesai belum pun sempat test. Jadi masuk sini nak 'take a fresh air'. Kalau tak ade masalah dalam penyesuaian pengujiannya mungkin saya akan post kan kod sumbernya dalam masa yang terdekat. Edited August 11, 2004 by 'ra Quote Share this post Link to post Share on other sites
encik pot pet 0 Report post Posted August 12, 2004 (edited) apa yang saya faham...'ra nak design satu programming language yang baru.. dan bahasa yg digunakan mirip kepada bahasa melayu.. bukan bahasa inggeris..yang jelas sekali, 'ra bukan nak design framework..cuma 'ra nak kembali kepada zaman 60an, 70an iaitu zaman orang berlumba2 nak buat programming language... kalau dah design programming language, takde guna kalau kita tak ada compiler/interpreter kepada bahasa tersebut.jadi kena kumpul orang2 yg sanggup bincang pasal language design..lepas tu kena cari org yg sanggup utk belajar/membina compiler nya sekali..last sekali baru tambah benda2 lain mcm framework,etcmcm tu ke 'ra?p/s:kebanyakan student2 it/sc terlebih belajar teori oop/wrapper/framework,etctapi jarang yg pernah cuba nak code parser, etc Edited August 12, 2004 by zeph Quote Share this post Link to post Share on other sites
mohdfadly 24 Report post Posted August 12, 2004 Memandangkan topik ini amat menarik untuk dibincangkan, jadi saya telah pinkan. Teruskan perbincangan, semoga perbincangan ini dapat dikongsi manfaatnya bersama-sama ahli-ahli yang lain. Quote Share this post Link to post Share on other sites
'ra 0 Report post Posted August 13, 2004 (edited) Memandangkan topik ini amat menarik untuk dibincangkan, jadi saya telah pinkan.Terkejut saya bila mula-mula masuk ke sini tadi. Saya sangka topik ini telah dipadam. Rupanya nun di atas sekali. Terima kasih puteranetwork di atas penghormatan ini.'ra nak design satu programming language yang baru.. dan bahasa yg digunakan mirip kepada bahasa melayu.. bukan bahasa inggeris..Memang macam tu lah angan-angannya. Tetapi tidak akan mengenepikan kemungkinan intergrasi pembaca sumber dari bahasa inggeris atau pun yang lain-lain (kadazan, milanau, minang, jawa, banjar, mandarin, hakka dan pelbagai dialek bangsa malaysia). Ianya hanya perlu di set kan pada module parser dengan bantuan pembaca fail INI. Tetapi hanya setelah enjin utamanya sudah kukuh dan mileage juga ter-uji. Tang dialeknya tu, para pengguna yang perlu set dan buat terjemahan. Macam file editor yang mempunyai pelbagai bahasa antara-muka penggunanya, adalah satu contoh yang terhampir.Perkembangan terbaruSaya telah memperbaiki kod sumber perisian contoh (PAR) pada mesej saya yang terdahulu. Jadi saya ubah-suai, compile-kan, sertakan beberapa fail contoh dan fail penerangan ringkas mengenainya. Bagi sesiapa yang berminat, boleh memindah turun pakej perisian PAR bersama kod sumbernya diruang fail interpreter di komuniti ini:http://www.smartgroups.com/vault/ictmelayu/InterpreterKomuniti ictmelayu adalah sebuah tempat perkongsian fail-fail pengaturcaraan bahasa melayu hasil dari perbicangan di dalam topik ini. Oleh kerana sebuah tempat diperlukan untuk menyimpan fail-fail rujukkan dan hasil pembangunan perisian ini, saya telah membina komuniti tersebut hari ini. Tiada sekatan dalam melayari bahagian2 di dalamnya kecuali jika anda ingin meng-upload-kan sebarang fail untuk dikongsi bersama, anda perlulah mendaftar. Ianya serupa seperti satu mail group yang mempunyai ruang simpanan fail.Dalam PembikinanSaya masih menambah upaya contoh compiler ringkas yang mengendalikan string seperti yang saya beritahu semalam. Nampaknya kena tambah beberapa fungsi yang tidak terdapat didalam Rapid-Q. Nasib baik ada perisian PAR. Sebahagian fungsi-fungsinya dapat digunakan dengan cemerlang. Masih belum dapat mengujinya kerana saya sedang optimize-kan keywords2-nya agar mudah difahami oleh semua. Compiler ini akan membaca fail sumber dan kemudiannya akan menterjemah kepada bahasa assembly. Di sini saya gunakan nasm dan golink untuk menghasilkan fail peringkat akhirnya iaitu stand-alone executable *.exe-nya. Saya berharap nanti bolehlah menggantikan penghasilan executable-nya dengan menggunakan fasm.Buat masa ini ia hanya mempunyai beberapa arahan/keywords sahaja untuk mengendalikan paparan string pada skrin. Kesemua arahan/keywords-nya dan 70% kod sumber adalah dalam bahasa melayu.Sehingga bertemu lagi pada lapuran saya yang akan datang. Edited August 13, 2004 by 'ra Quote Share this post Link to post Share on other sites
Ancient One 3 Report post Posted August 14, 2004 Ia juga akan membantu bagi menyelesaikan masalah keserasian bila FASM mula menyokong sepenuhnya Linux, BSD dan lain-lain OS.fasm wujud dalam semer OS yang wujud untuk x86.. Porting fasm code to other OS sangat mudah.. In fact aku ader (personal nyer) port untuk netbsd,beos dan qnx. Quote Share this post Link to post Share on other sites
'ra 0 Report post Posted August 14, 2004 Ancient One,Sekarang ni saya sedang menterjemahkan satu compiler mini yang mengendali string yang menggunakan back-end compiler-nya nasm dan golink. Nasm akan memproses menjadikan fail *.asm dari compiler ini kepada fail *.obj dan golink akan memproses keperingkat penghasilan fail PE-nya.Kedua-dua program nasm dan golink tidak disertakan dengan sebarang fail-fail *.inc. Ok, ini sudah kira baik untuk dia punya simplicity. Adakah fasm juga mampu memproses fail *.asm sehingga menjadi fail *.exe tanpa menggunakan sebarang fail rujukkan *.inc?Di sini saya cuba memendek proses penghasilan fail-fail executable-nya. Saya pernah dengar atau baca, nasm juga mampu menghasil fail *.exe secara terus dari fail *.asm tanpa menggunakan fail tambahan seperti *.inc dan bantuan sebarang program linker seperti golink, alink, ml dan sebagainya.Baiklah, saya akan lakarkan di sini dia punya assembly framework untuk diproses menjadi fail *.obj: ;------------------------------------- ; windows use MSVCRT.DLL ref in golink ; linux use ../lib/libc.* ref in golink ;------------------------------------- EXTERN system EXTERN puts EXTERN getchar EXTERN  exit ;-- windows -- EXTERN _sleep ;-- linux -- EXTERN sleep ;------------------------------------- section .text ;-- windows -- global START START: ;-- linux -- global _start _start: ;----------------- PUSHA   PUSH EBP   MOV  EBP, ESP   .   .  ;-- common cmds --   POP  xxx   PUSH xxx   CALL xxx   MOV  xxx,xxx   MUL  xxx   .   . ;------------------------------------- section .data ;-- windows -- ClearScreen  db "cls",0 ;-- linux -- ClearScreen  db "clear",0 . . ;-- extends list -- xxxxx  db "xxxx",0 ;------------------------------------- Untuk extern calls, hanya yang tertera disenaraikan di atas sahaja. Jadi dengan berdasarkan framework ini, bagaimanakah saya dapat memendek prosesnya hanya dengan menggunakan nasm atau fasm sahaja tanpa sebarang fail rujukkan tambahan dalam menghasilkan fail executable secara terus?Saya tidak berapa fasih dalam keperluan compiler fasm dan nasm untuk menulis kod tambahan agar ia lengkap untuk menyediakan struktur penghasilan sebuah fail PE. Jadi saya berharaplah Ancient One dapat memberikan bantuan ataupun sebarang pandangan yang boleh membantu sedikit sebanyak.Bantuan Ancient One amatlah saya hargai... "when things get tough, you should eat an ice-cream...but I'm prefer a slice of pie..." Quote Share this post Link to post Share on other sites
'ra 0 Report post Posted August 16, 2004 (edited) Kepada Acient One, terima kasih bayank-banyak kerana explain macam mana struktur PE yang ringkas ditulis utk fasm kat topic ini:http://forum.putera.com/tanya/index.php?show...indpost&p=34870dan topik ini:http://forum.putera.com/tanya/index.php?show...indpost&p=39232Saya dapat memahami sedikit-sebanyak utk disesuaikan dengan kod sumber saya.Hanya perlu baca lagi untuk pemahaman yang lebih jelas.;-----------Ade siapa yang telah mencuba interpreter yang saya upload-kan kat ictmelayu? Atau sebarang komen,perbincangan dan pertanyaan mengenainya? Edited August 16, 2004 by 'ra Quote Share this post Link to post Share on other sites
'ra 0 Report post Posted August 20, 2004 (edited) Perkembangan TerbaruSaya telah selesai membina enjin asas Compiler pertama saya yang diberi nama am32. Buat masa ini ia hanya menghasilkan perisian konsol 32bit Windows dan kemungkinan Linux juga. Oleh kerana saya tidak mempunyai OS Linux, ujian tidak dapat dilakukan sekarang. Walaubagaimana pun, kod sumber yang berasaskan Rapid-Q basic, mempunyai pilihan di antara kedua-dua flat-form ini. Dengan menggunakan Rapid-Q Basic untuk Linux, anda boleh membina semula am32 dan menjana perisian linux.Buat masa ini saya ingin melakukan ujian binari ke atas sistem windows. Saya telah membuat satu demo ringkas menggunakan aturcara am32 dan boleh di-download dari ruang fail komuniti ictmelayu melalui link ini:http://www.smartgroups.com/vault/ictmelayu...er/am32test.zipSaya berharap jika anda mempunyai versi windows yang berbeza-beza, silalah melaporkan jika ianya boleh digunakan atau tidak. Jika ia boleh digunakan ke atas semua versi windows, Bahasa Aturcara am32 akan di-release-kan pada masa terdekat. Kesudian anda menguji hasil bahasa aturcara baru ini amatlah dihargai. semoga lebih ramai lagi dikalangan kita menimba ilmu penghasilan 'compiler' dengan perkongsian maklumat ICT ini.sekian, terima kasih. Edited August 20, 2004 by 'ra Quote Share this post Link to post Share on other sites
encik pot pet 0 Report post Posted August 20, 2004 (edited) http://www.smartgroups.com/vault/ictmelayu...er/am32test.zipreport: running wellos: winxp sp2 beta v.2149 Edited August 20, 2004 by zeph Quote Share this post Link to post Share on other sites
Ancient One 3 Report post Posted August 21, 2004 usually fail *.inc digunakan untuk "include" kod/pemalar/data daripada fail lain dalam main source. Kalau nak diikutkan, semer assembly compiler takde masalah nak kompil single source code terus kepada executable file, but then kena bina sendiri la pengepala PE. Saya sedang menyiapkan sebijik include files khas untuk Win32 programming dengan FASM yang korang bleh carik sendiri kat site saya :FARM. Sekarang site saya cuma didekasikan khas untuk FASM. Ader sikit tuto. It's still under construction since saya tak sure lagi camne nak implement structure yang paling bagussss.. tapi most win32 constants dah ader dah dan fasmwin.inc include file tu dah kire lengkap gak la. Basically care nak guna simple je: ;make sure INC env var dah set include "%INC%\FASMWIN.INC" format PE GUI 4.1 entry Mula PROC Mula __cdecl BEGIN Â Â APICALL Â Â MessageBox, 0, "test", "test", 0 END data import IMPORT USER32.DLL, MessageBox, "MessageBoxA" end data Kalau nak import function dari DLL lain, just wrap it all between data import ;use IMPORT macro here end data contohnya IMPORT MSVCRT.DLL, getchar, "getchar",\ Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â system, "system" IMPORT KERNEL32.DLL, ExitProcess, "ExitProcess" ;dan sebagainya Kalau nak declare function, guna PROC macro set seperti kat atas. Aper2 pun, kat site saya dah bagitau cara penggunaannya. Saya akan cuba memperbaiki include fail dan tutorial yang ader sekarang. busy betul skrg ni... jaga budak .Sorry laa takde include files untuk Linux.. ntah naper skrg benci betul kat benda alah nih. Kalau untuk BSD bleh kot... Quote Share this post Link to post Share on other sites
P Untuk Pendeta 0 Report post Posted August 21, 2004 dua sukukata: GEM..PAK..baru semalam aku bincang ngan member aku pasal programming BM...ingatkan takde org nak buat...tak perasan plak ada thread ni...tapi aku dah lupa dah psl programming...huhu..2 tahun takberusik..dah bekarat.jangan pedulikan aku...terus terus bincang..bagus bagus... Quote Share this post Link to post Share on other sites
Ancient One 3 Report post Posted August 25, 2004 Saya tidak berapa fasih dalam keperluan compiler fasm dan nasm untuk menulis kod tambahan agar ia lengkap untuk menyediakan struktur penghasilan sebuah fail PE. Jadi saya berharaplah Ancient One dapat memberikan bantuan ataupun sebarang pandangan yang boleh membantu sedikit sebanyak.FASM takde masalah nak hasilkan object file.. dengan arahan format MS COFF. Kalau awak guna extern dalam NASM, ia adalah extrn dalam FASM, manakala public untuk global. Kalau taknak modify NASM nyer kod untuk dikompil dalam FASM (I'm not sure about this.. tak biasa dengan sintaks NASM), define je alias untuk directive tersebut : extern fix extrn global fix public Basic usage of NASM's extern kalau tak silap saya sama dengan FASM's extrn, iaitu extern foo So, kalau kiter just guna sintaks camni, ok la sikit kalau nak convert NASM source to FASM. Problemnya dengan NASM nyer extern kiter bleh bagi list of symbols, e.g extern foo, bar, foobas which is actually implemented as a macro (according to its documentation), tapi tidak FASM. So, maybe kiter bleh buat extern macro dalam fasm (just untuk basic sintaks ni) : macro extern [$sym] {extrn $sym} jadi blehla kiter gunakan sintaks cam NASM yang bleh terima lebih daripada 1 nama symbols. Sama juga untuk NASM's global directive, implemented as macro in fasm : macro global [$label] {public $label} Seperti biasa, ia hanya bleh support basic usage of the directive. Problemnya adalah pada section directive since penggunaannya di dalam NASM lain dengan FASM (fasm is a flat assembler, penggunaan directive ni hanya akan declare section baru). Tapi kiter bleh limitkan penggunaan section dalam NASM supaya kiter bleh sokong directive ni dalam FASM dengan macro : Kod awak : ;------------------------------------- ; windows use MSVCRT.DLL ref in golink ; linux use ../lib/libc.* ref in golink ;------------------------------------- EXTERN system EXTERN puts EXTERN getchar EXTERN  exit ;-- windows -- EXTERN _sleep ;-- linux -- EXTERN sleep ;------------------------------------- section .text ;-- windows -- global START START: ;-- linux -- global _start _start: ;-----------------   PUSHA   PUSH EBP   MOV  EBP, ESP   .   . ;-- common cmds --   POP  xxx   PUSH xxx   CALL xxx   MOV  xxx,xxx   MUL  xxx   .   . ;------------------------------------- section .data ;-- windows -- ClearScreen  db "cls",0 ;-- linux -- ClearScreen  db "clear",0 . . ;-- extends list -- xxxxx  db "xxxx",0 ;------------------------------------- converted to fasm (saya komen part yang tak relevan): format MS COFF macro EXTERN [$sym] {extrn $sym} extern fix EXTERN macro GLOBAL [$label] {public $label} global fix GLOBAL macro SECTION [$name] {common section `$name} section fix SECTION EXTERN system EXTERN puts EXTERN getchar EXTERN  exit ;-- windows -- EXTERN _sleep ;-- linux -- ;EXTERN sleep ;------------------------------------- section .text ;-- windows -- global START START: ;-- linux -- ;global _start ;_start: ;-----------------   PUSHA   PUSH EBP   MOV  EBP, ESP  ;.  ;. ;-- common cmds --  ;POP  xxx  ;PUSH xxx  ;CALL xxx  ;MOV  xxx,xxx  ;MUL  xxx  ;.  ;. ;------------------------------------- section .data ;-- windows -- ClearScreen  db "cls",0 ;-- linux -- ;ClearScreen  db "clear",0 ;-- extends list -- xxxxx  db "xxxx",0 ;------------------------------------- Now you need a linker to finish the building process . Membina program PE secara manual taklah susah sangat. Kat bawah adalah program (fasm code) yang hanya bersaiz 226 bytes. Run on XP. Saya tak try kat Windows lain (yang pastinya Win9x takkan bleh run program nih since it's 1 BYTE ALIGNED!). Tengok kat task manager untuk confirm yang ia benar2 run (it just doing an infinite loop). IMAGE_FILE_32BIT_MACHINE equ 0x0100 IMAGE_FILE_EXECUTABLE_IMAGE equ 0x0002 IMAGE_SUBSYSTEM_WINDOWS_GUI equ 2 IMAGE_SCN_CNT_CODE equ 0x00000020 IMAGE_SCN_MEM_READ equ 0x40000000 DOS_HEADER: dw "MZ" rb 0x3A dd NT_HEADERS NT_HEADERS: dw "PE", 0 FILE_HEADER: dw 0x014c, 1 dd 0, 0, 0 dw 224, IMAGE_FILE_32BIT_MACHINE or IMAGE_FILE_EXECUTABLE_IMAGE OPTIONAL_HEADER: dw 0x10b db 6, 0 dd 0, 0, 0, Main, 0, 0, 0x10000, 1, 1 dw 5, 0, 0, 0, 5, 0 dd 0, SizeOfImage, HeaderSize, 0 dw IMAGE_SUBSYSTEM_WINDOWS_GUI, 0 dd 0, 0, 0, 0, 0, 0 ;takde langsung directory entries kat sini. ;at least kiter define 1 seksyen SECTION_HEADER: ;1 dq ".ANCIENT" dd 1 dd Main dd 1, Main, 0, 0, 0, IMAGE_SCN_CNT_CODE or IMAGE_SCN_MEM_READ ;section raw data HeaderSize=$ Main:   jmp   $ SizeOfImage=$ Actually banyak kelemahan kalau kiter guna arahan format PE yang build Win32 executable directly. Terutamanya pasal external symbol nih. Mungkin kiter ader external code dalam bentuk *.obj files daripada orang lain yang kiter nak sertakan dalam program. Pasal *.lib files pun bgitu jugak. It's an archive of *.obj files. Tapi selalunya kiter gunakannya untuk define export information suatu DLLs so secara teorinya kiter tak perlukan *.lib files ni untuk import suatu fungsi daripada program lain. Dengan menggunakan IMPORT macros set kiter bleh import data/functions from other programs either by name or ordinal. Kat bawah demo.[f]asm awak and it's as readable as other higher level language . Semer arahan hurup beso adalah macros (e.g PROC, APICALL...but not SECONDS). demo.asm : include "%INC%\FASMWIN.INC" ;we need a console! format PE console ;our program ep entry main ;define one section for code and data. We don't need it to be writeable. section ".ancient" code data readable msg_banner1  db 0 msg_banner2  db 9, 9, "           °°°°  °°° ", 0 msg_banner3  db 9, 9, "           °°°°°  °°°°°", 0 msg_banner4  db 9, 9, "           °° °°  °° °°", 0 msg_banner5  db 9, 9, "           °° °°  °° °°", 0 msg_banner6  db 9, 9, "   ±±±±  ±±±±±±±  °° °°  °° °°", 0 msg_banner7  db 9, 9, "    ±±  ±±±±±±±±   °°   °°", 0 msg_banner8  db 9, 9, "  ±±±±±  ±± ±± ±±  °°°°  °°°°", 0 msg_banner9  db 9, 9, "  ±±±±±  ±± ±± ±±  °°°°  °°°° ", 0 msg_banner10 db 9, 9, "  ±± ±±  ±± ±± ±±   °°  °°  ", 0 msg_banner11 db 9, 9, "  ±± ±±  ±± ±± ±±  °° °°  °°  ", 0 msg_banner12 db 9, 9, "  ±± ±±  ±± ±± ±±  °° °°  °°  ", 0 msg_banner13 db 9, 9, "  ±±±±±  ±± ±± ±±  °°°°°  °°°°°", 0 msg_banner14 db 9, 9, "  ±±±±±  ±± ±± ±±  °°°°°  °°°°°", 0 msg_banner15 db 0 msg_banner16 db 0 msg_banner17 db "      am32 sebuah Bahasa Aturcara mudah untuk Win32 dan Linux.", 0 msg_banner18 db " ----------------------------------------------------------------------------", 0 msg_banner19 db "    Ianya dihasilkan dengan hanya kurang daripada 600 baris arahan!", 0 msg_banner20 db 0 msg_banner21 db 0 msg_banner22 db 0 msg_banner23 db "Tekan ENTER untuk keluar...", 0 align 4 msg_banner_table1 \ dd msg_banner1, msg_banner2, msg_banner3, msg_banner4, msg_banner5, msg_banner6 dd msg_banner7, msg_banner8, msg_banner9, msg_banner10, msg_banner11, msg_banner12 dd msg_banner13, msg_banner14, msg_banner15, msg_banner16, msg_banner17, msg_banner18 dd msg_banner19, 0 msg_banner_table2 \ dd msg_banner20, msg_banner21, msg_banner22, msg_banner23, 0 ;just for convinience :) SECONDS fix *1000 ;define main function using __cdecl calling convention. PROC main __cdecl BEGIN   lea   ebx, [msg_banner_table1]   xor   esi, esi   mov   edi, esi  ;print msg banner 1 line by line   REPEAT     APICALL puts, dword [ebx+esi*4]     inc   esi     pop   eax   UNTIL dword [ebx+esi*4] EQ 0  ;2 seconds delay   APICALL _sleep, 2 SECONDS   pop   eax  ;print msg banner 2 line by line   lea   ebx, [msg_banner_table2]   REPEAT     APICALL puts, dword [ebx+edi*4]     inc   edi     pop   eax   UNTIL dword [ebx+edi*4] EQ 0   APICALL   getchar   APICALL   exit END data import IMPORT MSVCRT.DLL,  puts, "puts",\           exit, "exit",\           _sleep, "_sleep",\           getchar, "getchar" end data ;if you need to use it without data import..end data (i.e marking whole section ;as containing the import directory), call "import.End" macro after using "IMPORT" macro, ;like this ;------------------------------------------------- ;section ".idata" data readable writeable import ;IMPORT MSVCRT.DLL,  puts, "puts",\ ;           exit, "exit",\ ;           _sleep, "_sleep",\ ;           getchar, "getchar" ;import.End ;------------------------------------------------- ENJOY!Saya telah selesai membina enjin asas Compiler pertama saya yang diberi nama am32..Saya berharap jika anda mempunyai versi windows yang berbeza-beza, silalah melaporkan jika ianyaboleh digunakan atau tidak. Jika ia boleh digunakan ke atas semua versi windows, Bahasa Aturcaraam32 akan di-release-kan pada masa terdekat.It should work on all Win32 (Win9x, NTs) platforms yang ader M$ C/C++ runtime library (MSVCRT.DLL).Meh bagi kiter tengok aper yang awak dah buat . Quote Share this post Link to post Share on other sites
'ra 0 Report post Posted August 27, 2004 Terima kasih Ancient One, maklumat mengenai fasm ini sangat berguna untuk ujian penghasilan fail PE. Saya akan cuba memahami lagi tentang maklumat yang baru saja diberikan ini agar dapat disesuaikan di dalam ujian seterusnya.Saya baru sahaja selesai membuat satu ujian menggunakan fasm sebagai back-end compiler untuk penghasilan fail PE-nya. Ujian tersebut telah dapat lengkapkan dengan jayanya. Oleh itu saya sekarang sedang menyediakan pakej pengedaran untuk pindah-turun perisian ujian ini. Selain itu juga tengah sibuk menyediakan maklumat tambahan seperti rujukkan dan panduan pengguna untuk disertakan bersama didalam pakej tersebut.Jadi sesiapa saja boleh memilih pakej mana yang hendak dikaji, samada pakej yang mempunyai back-end compiler-nya menggunakan nasm dan golink atau pakej yang hanya menggunakan fasm. Kalau ada masa untuk mengkaji kedua-duanya pun boleh. Untuk pakej fasm saya telah menyesuaikan dengan cara coding method yang biasa digunakkan didalam penulisan sumber fasm. Jadi ianya hanya menggunakan keyword-keyword asas dan saya elakkan menggunakan makro kerana boleh mengelirukan bagi orang yang tidak memahami bahasa penghimpun.Kemungkinan penggunaan makro akan dilibatkan bila peringkat yang lebih tinggi nanti seperti objek-objek GUI dan lain-lain seperti Socket dan CGI mula ditambah kedalam perisian am32. Cuma buat masa ini saya masih tercari-cari cara penggunaan dan panggilan kepada fungsi-fungsi dari Win32 DLL yang asas seperti USER32.DLL dan KERNEL32.DLL untuk mengendalikan operasi konsol dan cuba mengurangkan penggunaan runtime DLL dari perisian aturcara lain seperti MSVCRT.DLL atau MSCRT.DLL. Dengan cara itu, saya dapat melihat perbandingan dari segi kebaikannya jika memanggil terus fungsi-fungsi DLL utama dari sistem operasi seperti USER32.DLL dan KERNEL32.DLL.Saya akan melapurkan lagi bila sudah selesai menyediakan pakej-pakej am32 dan meng-upload-kannya ke Internet.Sehingga berjumpa lagi di masa yang terdekat... Quote Share this post Link to post Share on other sites
'ra 0 Report post Posted August 28, 2004 Baru sahaja selesai menulis dokumen panduan untuk perisian am32. Gambar di bawah ini adalah bentuk dokumen panduan selepas kompilasi penjilidannya:Sila beri komen dan kritik tentang logo perisian dan dokumen panduan.Terima kasih,ps - saya rasa terus tertarik dengan logo perisian ini bila saya selesai saja menghasilkan grafiknya. Ia semacam pemberi semangat untuk terus meningkatkan keupayaan perisian ini keperingkat yang lebih kompleks lagi selepas fasa pertama ini diselesai. Quote Share this post Link to post Share on other sites
Ancient One 3 Report post Posted August 29, 2004 Cuma buat masa ini saya masih tercari-cari cara penggunaan dan panggilan kepada fungsi-fungsi dari Win32 DLL yang asas seperti USER32.DLL dan KERNEL32.DLL untuk mengendalikan operasi konsol dan cuba mengurangkan penggunaan runtime DLL dari perisian aturcara lain seperti MSVCRT.DLL atau MSCRT.DLL. Dengan cara itu, saya dapat melihat perbandingan dari segi kebaikannya jika memanggil terus fungsi-fungsi DLL utama dari sistem operasi seperti USER32.DLL dan KERNEL32.DLL.Tu yang sebaik-baiknya....Documentation tu nampaknya bleh tahan la kot.. Nak tanya sikit.. "32" dalam "am32" tu amende?? 32-bit ?? bleh tak awak detached nombor2 camni daripada namanya? bagi jer nama "am". Quote Share this post Link to post Share on other sites