Jump to content
'ra

Bahasa Aturcara Melayu?

Recommended Posts

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

Share this post


Link to post
Share on other sites

tahniah kepada 'ra atas inisiatif yang baik ni..

Terima kasih. Sama-sama menyumbang pun apa salahnya... smile.gif

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 baik

Ia 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 name

Buat 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... biggrin.gif

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... wink.gif

Share this post


Link to post
Share on other sites

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 smile.gif

Share this post


Link to post
Share on other sites

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 smile.gif

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:

  1. Pembaca Sumber
  2. Pengurusan Directive/Syntax/Keywords
  3. Penukar abjad ke nombor HEX(nombor asas enambelas)
  4. Pemproses pengiraan, FPU dan jenis-jenis data pernomboran.
  5. Pemanggil DLL/OCX/OBJ/LIB
  6. 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.
  7. pengurus pengkalan data (INIFILE/MYSQL/TSUNAMI/SQLITE/MDB/DBF?/XML)
  8. Penterjemah ke bahasa Mesin (Assembler -> PE,DLL,OCX atau OBJ/LIB?)
  9. IDE and sistem bantuan rekaan antaramuka pengguna (RAD).

Share this post


Link to post
Share on other sites

has been deleted by me (me sucks)

hurm, sorry, saya tak mengikut perkembangan thread ni sblm ni

minta 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 happy.gif, i've something in mind after read the posts, thanks the guidences. ilmu saya masih sangat cetek

Edited by fatah

Share this post


Link to post
Share on other sites

Join sekali ek , i've something in mind after read the posts, thanks the guidences. ilmu saya masih sangat cetek

pheww, 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... biggrin.gif

Kalau ada nak tambah lagi, silakan. anda di alu-alukan.

Edited by 'ra

Share this post


Link to post
Share on other sites

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 ... smile.gif

Share this post


Link to post
Share on other sites

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? biggrin.gif 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 sumber
  • 2. Pengurusan Directive/Syntax/Keywords
  • 3. Penukar abjad ke nombor HEX(nombor asas enambelas)
  • 5. Pemanggil DLL
  • 8. 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. wink.gif

Share this post


Link to post
Share on other sites

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?

Share this post


Link to post
Share on other sites

setuju dgn siti

tu 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 .... unsure.gif

Share this post


Link to post
Share on other sites

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. wink.gif

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. biggrin.gif 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'. smile.gif

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 by 'ra

Share this post


Link to post
Share on other sites

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,etc

mcm tu ke 'ra?

p/s:

kebanyakan student2 it/sc terlebih belajar teori oop/wrapper/framework,etc

tapi jarang yg pernah cuba nak code parser, etc

Edited by zeph

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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. biggrin.gif 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 terbaru

Saya 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/Interpreter

Komuniti 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 Pembikinan

Saya 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. smile.gif

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. smile.gif

Edited by 'ra

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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... smile.gif

"when things get tough, you should eat an ice-cream...but I'm prefer a slice of pie..." cool.gif

Share this post


Link to post
Share on other sites

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=34870

dan topik ini:

http://forum.putera.com/tanya/index.php?show...indpost&p=39232

Saya 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 by 'ra

Share this post


Link to post
Share on other sites

Perkembangan Terbaru

Saya 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.zip

Saya 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 by 'ra

Share this post


Link to post
Share on other sites

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 smile.gif.

Sorry laa takde include files untuk Linux.. ntah naper skrg benci betul kat benda alah nih. Kalau untuk BSD bleh kot...

Share this post


Link to post
Share on other sites

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... wink.gif

Share this post


Link to post
Share on other sites

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 smile.gif. 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 smile.gif. 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 ianya

boleh digunakan atau tidak. Jika ia boleh digunakan ke atas semua versi windows, Bahasa Aturcara

am32 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 smile.gif.

Share this post


Link to post
Share on other sites

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... wink.gif

Share this post


Link to post
Share on other sites

Baru sahaja selesai menulis dokumen panduan untuk perisian am32. Gambar di bawah ini adalah bentuk dokumen panduan selepas kompilasi penjilidannya:

user posted image

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.

Share this post


Link to post
Share on other sites

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".

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...