Moving-average-implementation-c

Moving-average-implementation-c

Berinvestasi dalam persediaan-101
Moving-average-convergence-divergence-pdf
Perdagangan saham-di atas rata-rata 200 hari mereka bergerak


Online-broker-usa-perbandingan Mht-forex How-to-do-options-trading-in-icicidirect Broker forex-Sydney Cara-untuk-belajar-forex-trading-in-india Online-trading-platform-in-singapore

Pengantar ARIMA: model nonseasonal Persamaan peramalan ARIMA (p, d, q): Model ARIMA secara teori adalah kelas model paling umum untuk meramalkan deret waktu yang dapat dibuat dengan cara membedakan (jika perlu), mungkin Dalam hubungannya dengan transformasi nonlinier seperti logging atau deflating (jika perlu). Variabel acak yang merupakan deret waktu adalah stasioner jika sifat statistiknya konstan sepanjang waktu. Seri stasioner tidak memiliki tren, variasinya berkisar rata-rata memiliki amplitudo konstan, dan bergoyang secara konsisten. Yaitu pola waktu acak jangka pendeknya selalu terlihat sama dalam arti statistik. Kondisi terakhir ini berarti autokorelasinya (korelasi dengan penyimpangannya sendiri dari mean) tetap konstan dari waktu ke waktu, atau ekuivalen, bahwa spektrum kekuatannya tetap konstan seiring berjalannya waktu. Variabel acak dari bentuk ini dapat dilihat (seperti biasa) sebagai kombinasi sinyal dan noise, dan sinyal (jika ada) dapat menjadi pola reversi rata-rata yang cepat atau lambat, atau osilasi sinusoidal, atau alternasi cepat pada tanda , Dan itu juga bisa memiliki komponen musiman. Model ARIMA dapat dilihat sebagai filter 8220filter8221 yang mencoba memisahkan sinyal dari noise, dan sinyal tersebut kemudian diekstrapolasikan ke masa depan untuk mendapatkan perkiraan. Persamaan peramalan ARIMA untuk rangkaian waktu stasioner adalah persamaan linier (yaitu regresi-tipe) dimana prediktor terdiri dari kelambatan variabel dependen dan atau lag dari kesalahan perkiraan. Yaitu: Prediksi nilai Y adalah konstanta dan atau jumlah tertimbang dari satu atau lebih nilai Y dan satu angka tertimbang dari satu atau lebih nilai kesalahan terkini. Jika prediktor hanya terdiri dari nilai Y yang tertinggal, itu adalah model autoregresif murni (8220 self-regressed8221), yang hanyalah kasus khusus dari model regresi dan yang dapat dilengkapi dengan perangkat lunak regresi standar. Sebagai contoh, model autoregresif orde pertama (8220AR (1) 8221) untuk Y adalah model regresi sederhana dimana variabel independennya hanya Y yang tertinggal satu periode (LAG (Y, 1) dalam Statgrafik atau YLAG1 dalam RegresIt). Jika beberapa prediktor tertinggal dari kesalahan, model ARIMA TIDAK merupakan model regresi linier, karena tidak ada cara untuk menentukan error8221 8220last period8417s sebagai variabel independen: kesalahan harus dihitung berdasarkan periode-ke-periode Saat model dipasang pada data. Dari sudut pandang teknis, masalah dengan menggunakan kesalahan tertinggal sebagai prediktor adalah bahwa prediksi model8217 bukanlah fungsi linear dari koefisien. Meskipun mereka adalah fungsi linier dari data masa lalu. Jadi, koefisien pada model ARIMA yang mencakup kesalahan tertinggal harus diestimasi dengan metode optimasi nonlinier (8220 climb-climbing8221) daripada hanya dengan memecahkan sistem persamaan. Akronim ARIMA adalah singkatan Auto-Regressive Integrated Moving Average. Lags dari rangkaian stasioner dalam persamaan peramalan disebut istilah quotautoregressivequot, kelambatan kesalahan perkiraan disebut istilah kuotasi rata-rata quotmoving, dan deret waktu yang perlu dibedakan untuk dijadikan stasioner disebut versi seri integimental dari seri stasioner. Model random-walk dan random-trend, model autoregresif, dan model smoothing eksponensial adalah kasus khusus model ARIMA. Model ARIMA nonseasonal diklasifikasikan sebagai model quotARIMA (p, d, q) quot, di mana: p adalah jumlah istilah autoregresif, d adalah jumlah perbedaan nonseason yang diperlukan untuk stasioneritas, dan q adalah jumlah kesalahan perkiraan yang tertinggal dalam Persamaan prediksi Persamaan peramalan dibangun sebagai berikut. Pertama, izinkan y menunjukkan perbedaan D dari Y. yang berarti: Perhatikan bahwa perbedaan kedua Y (kasus d2) bukanlah selisih 2 periode yang lalu. Sebaliknya, ini adalah perbedaan pertama perbedaan dari perbedaan pertama. Yang merupakan analog diskrit dari derivatif kedua, yaitu percepatan lokal dari seri daripada tren lokalnya. Dalam hal y. Persamaan peramalan umum adalah: Di sini parameter rata-rata bergerak (9528217s) didefinisikan sehingga tanda-tanda mereka negatif dalam persamaan, mengikuti konvensi yang diperkenalkan oleh Box dan Jenkins. Beberapa penulis dan perangkat lunak (termasuk bahasa pemrograman R) mendefinisikannya sehingga mereka memiliki tanda plus. Bila nomor aktual dicolokkan ke dalam persamaan, tidak ada ambiguitas, tapi penting untuk mengetahui konvensi mana yang digunakan perangkat lunak Anda saat Anda membaca hasilnya. Seringkali parameter dilambangkan dengan AR (1), AR (2), 8230, dan MA (1), MA (2), 8230 dll. Untuk mengidentifikasi model ARIMA yang sesuai untuk Y. Anda memulai dengan menentukan urutan differencing (D) perlu membuat stasioner seri dan menghilangkan fitur musiman musiman, mungkin bersamaan dengan transformasi yang menstabilkan varians seperti penebangan atau pengapuran. Jika Anda berhenti pada titik ini dan meramalkan bahwa rangkaian yang dibedakan konstan, Anda hanya memiliki model berjalan acak atau acak acak. Namun, rangkaian stationarized masih memiliki kesalahan autokorelasi, menunjukkan bahwa beberapa jumlah istilah AR (p 8805 1) dan beberapa persyaratan MA (q 8805 1) juga diperlukan dalam persamaan peramalan. Proses penentuan nilai p, d, dan q yang terbaik untuk seri waktu tertentu akan dibahas di bagian catatan selanjutnya (yang tautannya ada di bagian atas halaman ini), namun pratinjau beberapa jenis Model ARIMA nonseasonal yang biasa ditemui diberikan di bawah ini. ARIMA (1,0,0) model autoregresif orde pertama: jika seri stasioner dan autokorelasi, mungkin dapat diprediksi sebagai kelipatan dari nilai sebelumnya, ditambah konstanta. Persamaan peramalan dalam kasus ini adalah 8230 yang Y regresi pada dirinya sendiri tertinggal oleh satu periode. Ini adalah model konstanta 8220ARIMA (1,0,0) constant8221. Jika mean Y adalah nol, maka istilah konstan tidak akan disertakan. Jika koefisien kemiringan 981 1 positif dan kurang dari 1 besarnya (harus kurang dari 1 jika Y adalah stasioner), model tersebut menggambarkan perilaku rata-rata pada nilai periode berikutnya yang diperkirakan akan menjadi 981 1 kali sebagai Jauh dari mean sebagai nilai periode ini. Jika 981 1 negatif, ia memprediksi perilaku rata-rata dengan bergantian tanda, yaitu juga memprediksi bahwa Y akan berada di bawah rata-rata periode berikutnya jika berada di atas rata-rata periode ini. Dalam model autoregresif orde kedua (ARIMA (2,0,0)), akan ada istilah Y t-2 di sebelah kanan juga, dan seterusnya. Bergantung pada tanda dan besaran koefisien, model ARIMA (2,0,0) bisa menggambarkan sistem yang pembalikan rata-rata terjadi dengan mode sinusoidal oscillating, seperti gerak massa pada pegas yang mengalami guncangan acak. . ARIMA (0,1,0) berjalan acak: Jika seri Y tidak stasioner, model yang paling sederhana untuk model ini adalah model jalan acak, yang dapat dianggap sebagai kasus pembatas model AR (1) dimana autoregresif Koefisien sama dengan 1, yaitu deret dengan reversi mean yang jauh lebih lambat. Persamaan prediksi untuk model ini dapat ditulis sebagai: di mana istilah konstan adalah perubahan periode-ke-periode rata-rata (yaitu drift jangka panjang) di Y. Model ini dapat dipasang sebagai model regresi yang tidak mencegat dimana Perbedaan pertama Y adalah variabel dependen. Karena hanya mencakup perbedaan nonseasonal dan istilah konstan, model ini diklasifikasikan sebagai model quotARIMA (0,1,0) dengan konstan. Model acak-berjalan-tanpa-undian akan menjadi ARIMA (0,1, 0) model tanpa ARIMA konstan (1,1,0) membedakan model autoregresif orde pertama: Jika kesalahan model jalan acak autokorelasi, mungkin masalahnya dapat diperbaiki dengan menambahkan satu lag variabel dependen ke persamaan prediksi- -yaitu Dengan mengundurkan diri dari perbedaan pertama Y pada dirinya sendiri yang tertinggal satu periode. Ini akan menghasilkan persamaan prediksi berikut: yang dapat diatur ulang ke Ini adalah model autoregresif orde pertama dengan satu urutan perbedaan nonseasonal dan istilah konstan - yaitu. Sebuah model ARIMA (1,1,0). ARIMA (0,1,1) tanpa perataan eksponensial sederhana: Strategi lain untuk memperbaiki kesalahan autokorelasi dalam model jalan acak disarankan oleh model pemulusan eksponensial sederhana. Ingatlah bahwa untuk beberapa rangkaian waktu nonstasioner (misalnya yang menunjukkan fluktuasi yang bising di sekitar rata-rata yang bervariasi secara perlahan), model jalan acak tidak berjalan sebaik rata-rata pergerakan nilai masa lalu. Dengan kata lain, daripada mengambil pengamatan terbaru sebagai perkiraan pengamatan berikutnya, lebih baik menggunakan rata-rata beberapa pengamatan terakhir untuk menyaring kebisingan dan memperkirakan secara lebih akurat mean lokal. Model pemulusan eksponensial sederhana menggunakan rata-rata pergerakan rata-rata tertimbang eksponensial untuk mencapai efek ini. Persamaan prediksi untuk model pemulusan eksponensial sederhana dapat ditulis dalam sejumlah bentuk ekuivalen matematis. Salah satunya adalah bentuk koreksi yang disebut 8220error correction8221, dimana ramalan sebelumnya disesuaikan dengan kesalahan yang dibuatnya: Karena e t-1 Y t-1 - 374 t-1 menurut definisinya, ini dapat ditulis ulang sebagai : Yang merupakan persamaan peramalan ARIMA (0,1,1) - tanpa perkiraan konstan dengan 952 1 1 - 945. Ini berarti bahwa Anda dapat menyesuaikan smoothing eksponensial sederhana dengan menentukannya sebagai model ARIMA (0,1,1) tanpa Konstan, dan perkiraan koefisien MA (1) sesuai dengan 1-minus-alpha dalam formula SES. Ingatlah bahwa dalam model SES, usia rata-rata data dalam prakiraan 1 periode adalah 1 945. yang berarti bahwa mereka cenderung tertinggal dari tren atau titik balik sekitar 1 945 periode. Dengan demikian, rata-rata usia data dalam prakiraan 1-periode-depan model ARIMA (0,1,1) - tanpa model konstan adalah 1 (1 - 952 1). Jadi, misalnya, jika 952 1 0,8, usia rata-rata adalah 5. Karena 952 1 mendekati 1, model ARIMA (0,1,1) -tanpa-konstan menjadi rata-rata bergerak jangka-panjang, dan sebagai 952 1 Pendekatan 0 menjadi model random-walk-without-drift. Apa cara terbaik untuk memperbaiki autokorelasi: menambahkan istilah AR atau menambahkan istilah MA Dalam dua model sebelumnya yang dibahas di atas, masalah kesalahan autokorelasi dalam model jalan acak diperbaiki dengan dua cara yang berbeda: dengan menambahkan nilai lag dari seri yang berbeda Ke persamaan atau menambahkan nilai tertinggal dari kesalahan perkiraan. Pendekatan mana yang terbaik Aturan praktis untuk situasi ini, yang akan dibahas lebih rinci nanti, adalah bahwa autokorelasi positif biasanya paling baik ditangani dengan menambahkan istilah AR pada model dan autokorelasi negatif biasanya paling baik ditangani dengan menambahkan MA istilah. Dalam deret waktu bisnis dan ekonomi, autokorelasi negatif sering muncul sebagai artefak perbedaan. (Secara umum, differencing mengurangi autokorelasi positif dan bahkan dapat menyebabkan perubahan dari autokorelasi positif ke negatif.) Jadi, model ARIMA (0,1,1), di mana perbedaannya disertai dengan istilah MA, lebih sering digunakan daripada Model ARIMA (1,1,0). ARIMA (0,1,1) dengan perataan eksponensial sederhana konstan dengan pertumbuhan: Dengan menerapkan model SES sebagai model ARIMA, Anda benar-benar mendapatkan fleksibilitas. Pertama-tama, perkiraan koefisien MA (1) dibiarkan negatif. Ini sesuai dengan faktor pemulusan yang lebih besar dari 1 dalam model SES, yang biasanya tidak diizinkan oleh prosedur pemasangan model SES. Kedua, Anda memiliki pilihan untuk menyertakan istilah konstan dalam model ARIMA jika Anda mau, untuk memperkirakan tren nol-rata-rata. Model ARIMA (0,1,1) dengan konstanta memiliki persamaan prediksi: Prakiraan satu periode dari model ini secara kualitatif serupa dengan model SES, kecuali bahwa lintasan perkiraan jangka panjang biasanya adalah Garis miring (kemiringannya sama dengan mu) dan bukan garis horizontal. ARIMA (0,2,1) atau (0,2,2) tanpa pemulusan eksponensial linier konstan: Model pemulusan eksponensial linier adalah model ARIMA yang menggunakan dua perbedaan nonseasonal dalam hubungannya dengan persyaratan MA. Perbedaan kedua dari seri Y bukan hanya perbedaan antara Y dan dirinya tertinggal dua periode, namun ini adalah perbedaan pertama dari perbedaan pertama - i. Perubahan perubahan Y pada periode t. Jadi, perbedaan kedua Y pada periode t sama dengan (Y t - Y t-1) - (Y t-1 - Y t-2) Y t - 2Y t-1 Y t-2. Perbedaan kedua dari fungsi diskrit sama dengan turunan kedua dari fungsi kontinu: ia mengukur kuotasi kuadrat atau quotcurvaturequot dalam fungsi pada suatu titik waktu tertentu. Model ARIMA (0,2,2) tanpa konstan memprediksi bahwa perbedaan kedua dari rangkaian sama dengan fungsi linier dari dua kesalahan perkiraan terakhir: yang dapat disusun ulang sebagai: di mana 952 1 dan 952 2 adalah MA (1) dan MA (2) koefisien. Ini adalah model pemulusan eksponensial linear umum. Dasarnya sama dengan model Holt8217s, dan model Brown8217s adalah kasus khusus. Ini menggunakan rata-rata pergerakan tertimbang eksponensial untuk memperkirakan tingkat lokal dan tren lokal dalam rangkaian. Perkiraan jangka panjang dari model ini menyatu dengan garis lurus yang kemiringannya bergantung pada tren rata-rata yang diamati menjelang akhir rangkaian. ARIMA (1,1,2) tanpa perataan eksponensial eksponensial yang terfragmentasi. Model ini diilustrasikan dalam slide yang menyertainya pada model ARIMA. Ini mengekstrapolasikan tren lokal di akhir seri namun meratakannya pada cakrawala perkiraan yang lebih panjang untuk memperkenalkan catatan konservatisme, sebuah praktik yang memiliki dukungan empiris. Lihat artikel di quotWhy the Damped Trend karyaquot oleh Gardner dan McKenzie dan artikel quotGolden Rulequot oleh Armstrong dkk. Untuk rinciannya Umumnya dianjurkan untuk berpegang pada model di mana setidaknya satu dari p dan q tidak lebih besar dari 1, yaitu jangan mencoba menyesuaikan model seperti ARIMA (2,1,2), karena hal ini cenderung menyebabkan overfitting. Dan isu-isu kuotom-faktorquot yang dibahas secara lebih rinci dalam catatan tentang struktur matematis model ARIMA. Implementasi Spreadsheet: Model ARIMA seperti yang dijelaskan di atas mudah diterapkan pada spreadsheet. Persamaan prediksi hanyalah persamaan linier yang mengacu pada nilai-nilai masa lalu dari rangkaian waktu asli dan nilai kesalahan masa lalu. Dengan demikian, Anda dapat membuat spreadsheet peramalan ARIMA dengan menyimpan data di kolom A, rumus peramalan pada kolom B, dan kesalahan (data minus prakiraan) di kolom C. Rumus peramalan pada sel biasa di kolom B hanya akan menjadi Sebuah ekspresi linier yang mengacu pada nilai-nilai pada baris-kolom sebelumnya dari kolom A dan C, dikalikan dengan koefisien AR atau MA yang sesuai yang disimpan di sel-sel di tempat lain pada spreadsheet. MEMBUNUH FORTH Bagian 1: Merancang Keputusan di Kernel Forth oleh Brad Rodriguez Artikel ini pertama kali muncul di Jurnal Komputer 59 (JanuariFebruari 1993). PENDAHULUAN Semua orang di komunitas Forth berbicara tentang betapa mudahnya untuk memasuki Forth ke CPU baru. Tapi seperti banyak kutipan dan pertanyaan kuotomatis, tidak banyak yang tertulis tentang bagaimana melakukannya. Jadi, ketika Bill Kibler menyarankan topik ini untuk sebuah artikel, saya memutuskan untuk memutuskan tradisi lisan Forthwrights yang hebat, dan mendokumentasikan prosesnya dalam warna hitam dan putih. Selama artikel ini saya akan mengembangkan Forths untuk 6809, 8051, dan Z80. Im melakukan 6809 untuk mengilustrasikan model Forth yang mudah dan konvensional plus, saya telah mempublikasikan 6809 assembler ROD91, ROD92, dan Ill membutuhkan 6809 Forth untuk proyek TCJ di masa depan. Saya melakukan 8051 Forth untuk sebuah proyek di Universitas, tapi juga menggambarkan beberapa keputusan desain yang agak berbeda. Z80 Forth adalah untuk semua pembaca CPM TCJ, dan untuk beberapa teman dengan mengumpulkan sampah TRS-80-an. PERANGKAT KERAS PENTING Anda harus memilih CPU. Saya tidak akan menyelidiki kelebihan satu CPU daripada yang lain untuk Forth, karena pilihan CPU biasanya dipaksakan pada Anda oleh pertimbangan lain. Selain itu, objek dari artikel ini adalah untuk menunjukkan bagaimana cara memindahkan Forth ke CPU manapun. Anda dapat mengharapkan kernel 16-bit Forth yang biasa (lihat di bawah) untuk menempati sekitar 8K byte ruang program. Untuk kernel lengkap yang bisa mengkompilasi definisi Forth, Anda harus mengizinkan RAM 1K byte minimal. Untuk menggunakan sistem pengelolaan blok Forths untuk penyimpanan disk, Anda harus menambahkan 3 Kbytes atau lebih untuk buffer. Untuk model Forth 32-bit, dua kali lipat angka ini. Ini adalah minimum untuk mendapatkan kernel dan kernel Forth. Untuk menjalankan aplikasi pada perangkat keras Anda, Anda harus meningkatkan ukuran PROM dan RAM yang sesuai. 16 ATAU 32 BIT Ukuran kata yang digunakan oleh Forth tidak harus sama dengan CPU. Forth praktis terkecil adalah model 16-bit yaitu satu yang menggunakan bilangan bulat 16 bit dan alamat 16-bit. Komunitas Forth menyebut ini ukuran quotcellquot, karena kata kunci sama mengacu pada definisi Forth. CPU 8-bit hampir selalu mendukung 16-bit Forths. Ini biasanya membutuhkan pengkodean eksplisit dari aritmatika double-byte, walaupun beberapa CPU 8-bit memang memiliki beberapa operasi 16 bit. 16-bit CPU biasanya menjalankan 16-bit Forths, meskipun teknik presisi ganda yang sama dapat digunakan untuk menulis 32-bit Forth pada CPU 16 bit. Setidaknya satu 32-bit Forth telah ditulis untuk 80868088. CPU 32-bit biasanya menjalankan 32-bit Forths. Model Forth yang lebih kecil jarang menghemat panjang kode atau waktu prosesor. Namun, saya tahu setidaknya satu Forth 16 bit yang ditulis untuk 68000. Ini mengurangi ukuran kode aplikasi dengan faktor dua, karena definisi Forth tingkat tinggi menjadi rangkaian alamat 16 bit dan bukan string 32- Alamat bit (Ini akan menjadi jelas segera.) Kebanyakan 68000s, meskipun, memiliki banyak RAM. Semua contoh yang dijelaskan dalam artikel ini adalah 16-bit Forths yang berjalan pada CPU 8-bit. TEKNIK PENCIPTAANKodeTotot yang dicentang adalah ciri khas Forth. Sebuah kutipan kuantum hanya daftar alamat rutin yang akan dieksekusi. Anda bisa menganggap ini sebagai daftar panggilan subrutin, dengan petunjuk CALL dihapus. Selama bertahun-tahun banyak variasi threading telah dirancang, dan mana yang terbaik bergantung pada CPU dan aplikasi. Untuk membuat keputusan, Anda perlu memahami bagaimana mereka bekerja, dan pengorbanan mereka. Tidak Langsung Threaded Code (ITC) Ini adalah teknik pengarsipan Forth klasik, yang digunakan pada fig-Forth dan F83, dan dijelaskan dalam kebanyakan buku di Forth. Semua skema threading lainnya adalah quotimprovementsquot pada hal ini, jadi Anda perlu memahami ITC untuk menghargai yang lain. Mari kita lihat definisi kata depan SQUARE: Dalam ITC Forth yang khas, ini akan muncul di memori seperti yang ditunjukkan pada Gambar 1. (Header akan dibahas di artikel masa depan yang berisi informasi rumah tangga yang digunakan untuk kompilasi, dan tidak terlibat dalam threading .) Asumsikan SQUARE ditemui saat mengeksekusi kata Forth lainnya. Forths Interpreter Pointer (IP) akan menunjuk ke sel dalam memori - terdapat dalam kata quototherquot tersebut - yang berisi alamat kata SQUARE. (Tepatnya, sel itu berisi alamat Lapangan Kode SQUAREs.) Penafsir mengambil alamat itu, dan kemudian menggunakannya untuk mengambil isi Lapangan Kode SQUAREs. Isi ini adalah alamat lain - alamat subroutine bahasa mesin yang melakukan kata SQUARE. Dalam pseudo-code, ini adalah: Ini menggambarkan sebuah prinsip penting namun jarang dijelaskan: alamat kata Forth yang baru dimasukkan disimpan dalam W. KODE kata-kata tidak memerlukan informasi ini, tapi semua jenis kata-kata Forth lainnya. Jika SQUARE ditulis dalam kode mesin, ini akan menjadi akhir dari cerita: sedikit kode mesin akan dieksekusi, dan kemudian kembali ke interpreter Forth - yang, karena IP bertambah, mengarah ke kata berikutnya ke dihukum mati. Inilah sebabnya mengapa juru bahasa Forth biasanya disebut NEXT. Tapi, SQUARE adalah definisi quotcolonquot tingkat tinggi - ini berisi kuotografi, daftar alamat. Untuk melakukan definisi ini, juru bahasa Forth harus dimulai kembali di lokasi baru: Bidang Parameter SQUARE. Tentu saja, lokasi penerjemah lama harus diselamatkan, untuk melanjutkan kata Quotquot Forth dulu setelah SQUARE selesai. Ini sama seperti panggilan subrutin Tindakan bahasa mesin SQUARE hanyalah untuk mendorong IP lama, mengatur IP ke lokasi baru, menjalankan penerjemah, dan saat SQUARE dilakukan, pop IP. (Seperti yang Anda lihat, IP adalah kuartalan counterquot tingkat tinggi Forth.) Ini disebut DOCOLON atau ENTER di berbagai Forths: Fragmen kode yang identik ini digunakan oleh semua definisi Forth tingkat tinggi (yaitu threaded) Thats why a pointer Untuk fragmen kode ini, bukan fragmen itu sendiri, termasuk dalam definisi Forth. Lebih dari ratusan definisi, penghematan bertambah dan inilah mengapa disebut threading tidak langsung. The quotreturn dari subroutinequot adalah kata EXIT, yang akan dikompilasi saat Forth melihat. (Beberapa orang menyebutnya S bukan EXIT.) EXIT hanya menjalankan rutinitas bahasa mesin yang melakukan hal berikut: Berjalanlah melalui beberapa definisi Forth bersarang, hanya untuk meyakinkan diri Anda bahwa ini berhasil. Perhatikan karakteristik ITC: setiap kata Forth memiliki Field Code satu sel. Definisi usus mengkompilasi satu sel untuk setiap kata yang digunakan dalam definisi. Dan juru bahasa Forth harus benar-benar melakukan tipuan ganda untuk mendapatkan alamat kode mesin berikutnya untuk dijalankan (pertama melalui IP, lalu melalui W). ITC bukanlah teknik threading terkecil maupun tercepat. Ini mungkin yang paling sederhana meski DTC (dijelaskan selanjutnya) sama sekali tidak lebih kompleks. Jadi mengapa begitu banyak Forths tidak langsung threaded Terutama karena sebelumnya Forths, digunakan sebagai model, adalah tidak langsung. Hari-hari ini, DTC menjadi lebih populer. Jadi, kapan sebaiknya ITC digunakan Dari berbagai teknik, ITC menghasilkan definisi terbersih dan paling elegan - tidak lain kecuali alamat. Jika Anda menyesuaikan diri dengan pertimbangan tersebut, ITC dapat mengajukan banding kepada Anda. Jika kode Anda berkutat dengan bagian dalam definisi, kesederhanaan dan keseragaman representasi ITC dapat meningkatkan portabilitas. ITC adalah model Forth klasik, jadi mungkin lebih disukai untuk pendidikan. Akhirnya, pada CPU yang kekurangan instruksi panggilan subrutin - seperti 1802 - ITC seringkali lebih efisien daripada DTC. Kode Berurutan Langsung (DTC) Direct Threaded Code berbeda dari ITC hanya dalam satu hal: alih-alih Kode Bidang yang berisi alamat beberapa kode mesin, Kode Bidang berisi kode mesin sebenarnya. Saya tidak mengatakan bahwa kode lengkap untuk ENTER terdapat dalam masing-masing dan setiap definisi kolon. Dalam kata-kata kuotri tingkat tinggi, Field Kode akan berisi panggilan subrutin. Seperti yang ditunjukkan pada Gambar 2. Definisi usus, misalnya, akan berisi panggilan ke rutinitas ENTER. Kode pseudo-NEXT untuk threading langsung adalah sederhana: Kecepatan keuntungan ini: penafsir sekarang hanya melakukan tipuan tunggal. Pada Z80 ini akan mengurangi rutinitas BERIKUTNYA - fragmen kode yang paling banyak digunakan di kernel Forth - dari sebelas instruksi menjadi tujuh Ruang biaya ini: setiap definisi tingkat tinggi di Z80 Forth (misalnya) sekarang satu byte lebih lama, Karena alamat 2 byte telah diganti dengan panggilan 3 byte. Tapi ini tidak benar secara universal. 32-bit 68000 Forth dapat mengganti alamat 4 byte dengan instruksi BSR 4 byte, tanpa rugi bersih. Dan pada Zilog Super8, yang memiliki instruksi mesin untuk DTC Forth, alamat 2 byte diganti dengan instruksi ENTER 1 byte, membuat DTC Forth lebih kecil pada Super8 Tentu saja, definisi DTC CODE dua byte lebih pendek, karena mereka Tidak lagi membutuhkan pointer sama sekali Saya biasa berpikir bahwa definisi tingkat tinggi di DTC Forths mengharuskan penggunaan panggilan subrutin di Code Field. Frank Sergeant Pygmy Forth SER90 menunjukkan bahwa lompatan sederhana dapat digunakan dengan mudah, dan biasanya akan lebih cepat. Guy Kelly telah mengumpulkan ulasan hebat tentang implementasi Forth untuk IBM PC KEL92, yang sangat saya rekomendasikan untuk semua penulis kernel Forth. Dari 19 jurusan yang ia pelajari, 10 menggunakan DTC, 7 menggunakan ITC, dan 2 menggunakan thread subroutine (dibahas selanjutnya). Saya merekomendasikan penggunaan Direct-Threaded Code over-Direct Threaded Code untuk semua kernel Forth yang baru. Langsung ke NEXT, atau kode itu in-line The Forth inner interpreter, NEXT, adalah rutinitas umum untuk semua definisi KODE. Anda mungkin hanya menyimpan satu salinan rutinitas umum ini, dan meminta semua kata KODE melompat ke sana. (Perhatikan bahwa Anda Langsung ke NEXT a subroutine Call tidak diperlukan). Namun, kecepatan NEXT sangat penting bagi kecepatan keseluruhan sistem Forth. Selain itu, pada banyak CPU, rutinitas BERIKUTNYA cukup singkat sering hanya dua atau tiga instruksi. Jadi mungkin lebih baik untuk kode NEXT in-line, dimanapun itu digunakan. Hal ini sering dilakukan dengan membuat NEXT sebuah assembler macro. Ini adalah kecepatan sederhana vs keputusan ruang: in-line NEXT selalu lebih cepat, tapi hampir selalu lebih besar. Peningkatan ukuran total adalah jumlah byte tambahan yang diperlukan untuk ekspansi in-line, kali jumlah kata KODE dalam sistem. Kadang-kadang tidak ada tradeoff sama sekali: dalam DTC Forth 6809, in-line NEXT lebih pendek daripada instruksi Jump Subroutine Threaded Code (STC) Definisi Forth tingkat tinggi tidak lain adalah daftar subrutin yang akan dieksekusi. Anda tidak memerlukan juru bahasa untuk melakukannya, Anda bisa mendapatkan efek yang sama dengan hanya merangkai daftar panggilan subrutin bersama-sama: Lihat Gambar 3. Representasi kata-kata Forth ini telah digunakan sebagai titik awal untuk menjelaskan teknik threading ke bahasa assembly programmer KOG82. STC adalah representasi elegan definisi kolon dan kata-kata KODE sekarang identik. QuotDefined wordsquot (VARIABLE, CONSTANTs, dan sejenisnya) ditangani sama seperti di DTC - Field Code dimulai dengan lompatan atau panggilan ke beberapa kode mesin di tempat lain. Kelemahan utama adalah bahwa panggilan subrutin biasanya lebih besar daripada alamat sederhana. Pada Z80, misalnya, ukuran definisi usus besar meningkat sebesar 50 - dan sebagian besar aplikasi Anda adalah definisi usus buntu. Sebaliknya, pada 68000 32-bit mungkin tidak ada peningkatan ukuran sama sekali, ketika alamat 4 byte diganti dengan BSR 4 byte. (Tapi jika ukuran kode Anda melebihi 64K, beberapa alamat tersebut harus diganti dengan JSR 6-byte.) Antrian subroutine mungkin lebih cepat daripada threading langsung. Anda menghemat waktu dengan tidak memiliki juru bahasa, tapi Anda kehilangan waktu karena setiap referensi ke kata Forth melibatkan push and pop dari alamat pengirim. Dalam DTC Forth, hanya kata-kata tingkat tinggi yang menyebabkan aktivitas di tumpukan kembali. Pada 6809 atau Zilog Super8, DTC lebih cepat dari STC. Ada keuntungan lain untuk STC: ini membagi-bagikan dengan register IP. Beberapa prosesor - seperti 8.051 - sangat kekurangan register pengalamatan. Menghilangkan IP benar-benar dapat menyederhanakan dan mempercepat kernel. Satu-satunya cara untuk mengetahui dengan pasti adalah dengan menulis kode contoh. Hal ini terkait erat dengan seleksi register, yang dibahas di bagian selanjutnya. STC dengan in-line expansion optimization direct compilation Pada CPU lama dan 8-bit, hampir setiap primitif Forth melibatkan beberapa instruksi mesin. Tetapi pada CPU yang lebih kuat, kebanyakan primitif Forth ditulis dalam satu instruksi. Sebagai contoh, pada 32-bit 68000, DROP hanya Dalam subwutine-threaded Forth, menggunakan DROP dalam definisi kolon akan menghasilkan urutan ADDQ adalah instruksi dua byte. Mengapa menulis panggilan subrutin empat byte ke instruksi dua byte Tidak peduli berapa kali DROP digunakan, tidak ada penghematan Kode lebih kecil dan lebih cepat jika ADDQ dikodekan langsung ke arus BSR. Beberapa kompiler Forth melakukan ekspansi kuototometer ini dari CODE words CUR93a. Kerugian dari ekspansi in-line adalah penguraian kembali ke kode sumber asli menjadi sangat sulit. Selama panggilan subrutin digunakan, Anda masih memiliki petunjuk (alamat subrutin) ke kata-kata Forth yang terdiri dari benang. Dengan petunjuk pada kata-kata itu, Anda bisa mendapatkan namanya. Tapi begitu sebuah kata diperluas menjadi kode in-line, semua pengetahuan tentang asal kode itu hilang. Keuntungan dari ekspansi in-line - selain kecepatan dan ukuran - adalah potensi pengoptimalan kode. Sebagai contoh, urutan Forth akan disusun dalam 68000 STC karena namun dapat diperluas secara in-line sebagai instruksi mesin tunggal Mengoptimalkan kompiler Forth terlalu luas menjadi topik untuk artikel ini. Ini adalah area aktif penelitian bahasa Forth lihat, misalnya, SCO89 dan CUR93b. Puncak terakhir dari STC yang dioptimalkan adalah Forth yang mengkompilasi kode mesin quotpurequot, seperti kompiler C atau Fortran. Token Threaded Code (TTC) DTC dan STC bertujuan untuk meningkatkan kecepatan program Forth, dengan biaya tertentu dalam memori. Sekarang mari kita bergerak arah lain dari ITC, menuju sesuatu yang lebih lambat tapi lebih kecil. Tujuan thread Forth adalah untuk menentukan daftar kata-kata Forth (subrutin) yang akan dilakukan. Misalkan sistem 16-bit Forth hanya memiliki 256 kata yang berbeda. Kemudian setiap kata bisa dikenali secara unik oleh nomor 8-bit. Alih-alih daftar alamat 16 bit, Anda akan memiliki daftar pengenal 8 bit atau quottokens, quot dan ukuran definisi kolon akan dibelah dua. Forth menyimpan sebuah tabel alamat dari semua kata-kata Forth, seperti Ditunjukkan pada Gambar 4. Nilai token kemudian digunakan untuk mengindeks ke tabel ini, untuk menemukan kata Forth yang sesuai dengan tanda yang diberikan. Ini menambahkan satu tingkat tipuan ke juru bahasa Forth, jadi lebih lambat dari pada kuadran-threadedquot Forth. Keuntungan utama dari token-threaded Forths adalah ukuran kecil. TTC paling sering terlihat pada komputer genggam dan aplikasi dengan ukuran terbatas lainnya. Juga, tabel tolok ukur poinquot ke dalam semua kata-kata Forth dapat menyederhanakan keterkaitan modul yang disusun secara terpisah. Kerugian dari TTC adalah kecepatan: TTC membuat Forths paling lambat. Juga, kompiler TTC sedikit lebih kompleks. Jika Anda membutuhkan lebih dari 256 kata terakhir, diperlukan beberapa skema pengkodean terbuka untuk mencampur token 8 bit dan lebih besar. Saya dapat membayangkan 32-bit Forth menggunakan token 16 bit, tapi berapa banyak sistem 32-bit yang dibatasi oleh ukuran Segmen Threaded Code Karena ada begitu banyak turunan 8086 di dunia, threading segmen pantas untuk disebutkan secara singkat. Alih-alih menggunakan alamat byte quotnormalquot dalam segmen 64K, alamat paragraf digunakan. (A quotparagraphquot adalah 16 byte pada 8086.) Kemudian, penafsir dapat memuat alamat ini ke dalam register segmen, bukan ke register alamat biasa. Ini memungkinkan model Forth 16 bit untuk mengakses memori megabyte 8086 secara efisien. Kelemahan utama dari threading segmen adalah kuotimasi frekuensi 16 byte pada ruang memori. Setiap kata Forth harus disesuaikan dengan batasan 16 byte. Jika kata-kata Forth memiliki panjang acak, rata-rata 8 byte akan terbuang per kata Forth. ALOKASI PENDAFTARAN Di samping teknik threading, penggunaan register CPU adalah keputusan desain yang paling penting. Mungkin yang paling sulit. Ketersediaan register CPU dapat menentukan teknik threading apa yang dapat digunakan, dan bahkan peta memori apa yang akan menjadi The Classical Forth Register Model klasik Forth memiliki lima register bilangan bulat. Ini adalah entitas abstrak yang digunakan dalam operasi primitif Forth. NEXT, ENTER, dan EXIT didefinisikan sebelumnya dalam hal register abstrak ini. Masing-masing adalah satu sel lebar - yaitu di Forth 16 bit, ini adalah register 16 bit. (Ada pengecualian untuk aturan ini, seperti yang akan Anda lihat nanti.) Ini mungkin tidak semua register CPU. Jika CPU Anda tidak memiliki cukup register, beberapa di antaranya dapat disimpan di memori. Saya menggambarkannya sesuai urutan kepentingannya, yaitu bagian bawah daftar ini adalah kandidat terbaik untuk disimpan di memori. W adalah daftar kerja. Ini digunakan untuk banyak hal, termasuk referensi memori, jadi seharusnya register alamat misalnya Anda harus bisa mengambil dan menyimpan memori dengan menggunakan isi W sebagai alamatnya. Anda juga harus bisa melakukan aritmatika pada W. (Dalam DTC Forths, Anda juga harus bisa melompat secara tidak langsung menggunakan W.) W digunakan oleh penafsir dalam setiap kata di Forth. Dalam CPU yang hanya memiliki satu register, Anda akan menggunakannya untuk W dan menyimpan memori lainnya (dan sistemnya akan sangat lambat). IP adalah Interpreter Pointer. Ini digunakan oleh setiap kata Forth (melalui NEXT, ENTER, atau EXIT). IP harus berupa register alamat. Anda juga perlu untuk bisa menambah IP. Subroutine threaded Forths tidak memerlukan register ini. PSP adalah Parameter Stack (atau quotdata stackquot) Pointer, terkadang disebut hanya SP. Saya lebih suka PSP karena SP sering nama register CPU, dan mereka tidak boleh bingung. Sebagian besar kata KODE menggunakan ini. PSP harus berupa stack pointer, atau register alamat yang bisa bertambah dan decremented. Its juga plus jika Anda bisa melakukan pengalamatan terindeks dari PSP. RSP adalah Return Stack Pointer, terkadang disebut hanya RP. Ini digunakan oleh definisi kolon di ITC dan DTC Forths, dan dengan semua kata dalam STC Forths. RSP harus berupa stack pointer, atau register alamat yang bisa bertambah dan decremented. Jika memungkinkan. Letakkan W, IP, PSP, dan RSP di register. Register virtual yang mengikuti dapat disimpan dalam memori, namun biasanya ada keuntungan kecepatan untuk menyimpannya dalam register CPU. X adalah daftar kerja, bukan dianggap sebagai salah satu register Quantum quotclassicalquot, walaupun ITC Forth klasik membutuhkannya untuk tipuan kedua. Di ITC Anda harus bisa melompat secara tidak langsung menggunakan X. X juga bisa digunakan oleh beberapa kata KODE untuk melakukan aritmatika dan semacamnya. Hal ini sangat penting pada prosesor yang tidak dapat menggunakan memori sebagai operan. Misalnya, ADD on a Z80 mungkin (dalam pseudo-code) Kadang-kadang register kerja lain, Y, juga didefinisikan. UP adalah User Pointer, memegang alamat dasar area pengguna tugas. UP biasanya ditambahkan ke offset, dan digunakan oleh kode Forth tingkat tinggi, sehingga bisa disimpan di suatu tempat. Tetapi jika CPU bisa melakukan pengalamatan terindeks dari register UP, kata-kata KODE dapat lebih mudah dan cepat mengakses variabel pengguna. Jika Anda memiliki surplus register alamat, gunakan satu untuk UP. Tugas tunggal untuk tidak membutuhkan UP. X - jika diperlukan - lebih penting untuk tetap mendaftar daripada UP. UP adalah termudah dari register virtual Forth untuk pindah ke memori. Penggunaan Hardware Stack Sebagian besar CPU memiliki stack pointer sebagai bagian dari perangkat keras mereka, yang digunakan oleh interrupt dan subroutine calls. Bagaimana peta ini masuk ke register Forth Jika itu adalah PSP atau RSP Jawaban singkatnya adalah, itu tergantung. Dikatakan bahwa PSP digunakan lebih banyak daripada RSP di ITC dan DTC Forths. Jika CPU Anda memiliki beberapa register alamat, dan PUSH dan POP lebih cepat daripada referensi eksplisit, gunakan tumpukan perangkat keras sebagai Parameter Stack. Di sisi lain, jika CPU Anda kaya dalam mode pengalamatan - dan memungkinkan pengalamatan terindeks - ada nilai tambah dalam memiliki PSP sebagai register alamat tujuan umum. Dalam kasus ini, gunakan tumpukan perangkat keras sebagai Return Stack. Terkadang Anda tidak menggunakan tumpukan perangkat keras TMS320C25 hanya delapan sel dalam - semuanya tapi tidak berguna untuk Forth. Jadi tumpukan perangkat kerasnya hanya digunakan untuk interrupts, dan PSP dan RSP adalah register alamat tujuan umum. (ANS Forth menentukan minimal 32 sel Parameter Stack dan 24 sel dari Return Stack I lebih memilih 64 sel dari masing-masing.) Anda kadang-kadang akan menemukan dogma yang ada di markas Parameter Stack hardware, atau quothust bequot the Return Stack. Sebagai gantinya, catat beberapa contoh primitif Forth, seperti dan lihat pendekatan mana yang lebih kecil atau lebih cepat. (DUP dan DROP, tidak ada ujian - biasanya sangat sepele.) Terkadang Anda mencapai kesimpulan aneh, Gary Bergstrom telah menunjukkan bahwa sebuah DTC Forth 6809 dapat dibuat beberapa siklus lebih cepat dengan menggunakan pointer stack pengguna 6809 sebagai IP NEXT menjadi POP. Dia menggunakan daftar indeks untuk salah satu tumpukan Forths. Top-Of-Stack in Register Kinerja lebih jauh dapat ditingkatkan dengan tetap menjaga elemen teratas Parameter Stack dalam daftar Banyak kata-kata Forth (seperti 0) maka jangan perlu menggunakan stack. Kata lain masih melakukan jumlah push dan pops yang sama, hanya di tempat yang berbeda dalam kode. Hanya beberapa kata kata terakhir (DROP dan 2DROP) menjadi lebih rumit, karena Anda tidak bisa lagi mengatur stack pointer - Anda harus memperbarui daftar TOS juga. Ada beberapa peraturan saat menulis kata-kata KODE: Kata yang menghilangkan barang dari tumpukan harus memasukkan TOS kuotomatis ke dalam registernya. Sebuah kata yang menambahkan item ke tumpukan harus mendorong TOS quotoldquot ke tumpukan (kecuali, tentu saja, dikonsumsi oleh kata). Jika Anda memiliki setidaknya enam register CPU ukuran sel, saya sarankan untuk menyimpan TOS dalam daftar. Saya menganggap TOS lebih penting daripada UP untuk mendaftar, tapi kurang penting daripada W, IP, PSP, dan RSP. (KL dalam register melakukan banyak fungsi register X). Berguna jika register ini bisa melakukan pengalamatan memori. PDP-11, Z8, dan 68000 adalah kandidat yang baik. Sembilan dari 19 PC IBM Forth yang dipelajari oleh Guy Kelly KEL92 tetap melakukan TOS dalam daftar. Saya pikir inovasi ini telah dilawan karena kepercayaan salah bahwa a) ia menambahkan instruksi, dan b) elemen stack teratas harus dapat diakses sebagai memori. Ternyata bahkan kata-kata seperti PICK, ROLL, dan DEPTH sepele dimodifikasi untuk TOS-in-register. Bagaimana dengan menyangga dua elemen tumpukan di register Bila Anda menyimpan tumpukan teratas dalam daftar, jumlah total operasi yang dilakukan tetap pada dasarnya sama. Dorongan tetap mendorong, terlepas dari apakah sebelum atau sesudah operasi yang Anda lakukan. Di sisi lain, menyangga dua elemen tumpukan di register menambahkan sejumlah besar instruksi - dorongan menjadi dorongan diikuti dengan gerakan. Hanya prosesor Forth yang berdedikasi seperti RTX2000 dan kompiler pengoptimalan yang sangat cerdas bisa mendapatkan keuntungan dari penyangga dua elemen tumpukan di register. Beberapa contoh Berikut adalah daftar tugas yang dibuat oleh Forths untuk sejumlah CPU yang berbeda. Cobalah untuk menyimpulkan keputusan desain penulis dari daftar ini. QuotSPquot mengacu pada stack stack perangkat keras. QuotZpagequot mengacu pada nilai yang tersimpan di halaman memori 6502, nol, yang hampir sama bergunanya - terkadang lebih berguna daripada - nilai yang disimpan dalam register mis. Mereka bisa digunakan untuk pengalamatan memori. QuotFixedquot berarti bahwa Paynes 8051 Forth memiliki area pengguna tunggal yang tak tergoyahkan, dan UP adalah konstanta dengan kode keras. Regards Sempit Perhatikan sesuatu yang aneh dalam daftar sebelumnya The 6502 Forth - model 16-bit - menggunakan pointer 8-bit stack Hal ini dimungkinkan untuk membuat PSP, RSP, dan UP lebih kecil dari ukuran sel Forth. Hal ini karena tumpukan dan area pengguna keduanya merupakan bidang memori yang relatif kecil. Tumpukan masing-masing berukuran sekecil 64 sel, dan area pengguna jarang melebihi 128 sel. Anda hanya perlu memastikan bahwa a) area data ini terbatas pada area memori kecil, jadi alamat pendek dapat digunakan, atau b) bit alamat yang tinggi disediakan dengan cara lain, mis. Halaman memori pilih. Pada 6502, tumpukan perangkat keras terbatas pada halaman satu RAM (alamat 01xxh) oleh perancangan CPU. Penunjuk stack 8-bit dapat digunakan untuk Return Stack. Parameter Stack disimpan di halaman nol dari RAM, yang secara tidak langsung dapat diakses oleh register indeks 8-bit X. (Pertanyaan untuk siswa tingkat lanjut: mengapa menggunakan X 6502, dan bukan Y Petunjuk: lihat mode pengalamatan yang tersedia. ) Pada 8051, Anda dapat menggunakan register 8-bit R0 dan R1 untuk mengatasi RAM eksternal, asalkan Anda secara eksplisit mengeluarkan 8 bit alamat yang tinggi ke port 2. Ini memungkinkan sebuah quotpage selectquot untuk dua tumpukan. UP berbeda dengan PSP dan RSP: ini hanya memberikan alamat dasar tidak pernah bertambah atau berkurang. Jadi praktis untuk memasok hanya bit tinggi dari daftar virtual ini. Bit yang rendah kemudian harus disediakan teknik pengindeksan apapun yang diindeks. Sebagai contoh, pada 6809, Anda dapat menggunakan register DP untuk menahan 8 bit UP tinggi, dan kemudian menggunakan pengalamatan Direct Page untuk mengakses salah satu dari 256 lokasi di halaman ini. Ini memaksa semua area pengguna untuk memulai pada alamat xx00h, yang tidak memiliki kesulitan besar, dan membatasi area pengguna menjadi 128 sel. Pada 8086, Anda dapat menggunakan daftar segmen untuk menentukan alamat dasar area pengguna. DAFTAR PUSTAKA CUR93a Curley, Charles, quotLife di FastForth Lane, menunggu publikasi di Forth Dimensions. Deskripsi dari 68.000 subroutine-threaded Forth. Curley, Charles, quotOptimizing dalam BSRJSR Threaded Forth, menunggu publikasi di Forth Dimensions. Pengoptimalan kode single pass untuk FastForth, hanya dalam lima layar kode Termasuk daftar. KEL92 Kelly, Guy M. quotForth Systems Comparisons, quot Forth Dimensions XIII: 6 (MarApr 1992). Juga diterbitkan dalam Prosiding Konferensi FORTO 1991. Keduanya tersedia dari Forth Interest Group, P.O. Kotak 2154, Oakland, CA 94621. Menggambarkan rancangan pengorbanan banyak 8.086 Forth dengan fragmen kode dan tolok ukur - KOG82 Kogge yang sangat dianjurkan, Peter M. quotAn Trail Arsitektur untuk Sistem Threaded- Code, quot IEEE Computer, vol. 15 tidak 3 (Mar 1982). Tetap deskripsi definitif berbagai teknik threading. ROD91 Rodriguez, B.J. quotB.Y.O. Assembler, quot Bagian 1, Jurnal Komputer 52 (SepOct 1991). Prinsip umum penulisan perakit Forth. ROD92 Rodriguez, B.J. quotB.Y.O. Assembler, quot Bagian 2, Jurnal Komputer 54 (JanFeb 1992). Perakit 6809 di Forth. SCO89 Scott, Andrew, quotAn Pengoptimal Ekstensi untuk Kompilasi Forth, 1989 Prosiding FORML Prosiding. Forth Interest Group, P.O. Kotak 2154, Oakland, CA 94621. Deskripsi bagus tentang pengoptimasi 68000 tidak ada kode yang tersedia. CUR86 Curley, Charles, real-Forth untuk 68.000. Didistribusikan secara pribadi (1986). JAM80 James, John S. fig-Forth untuk PDP-11. Forth Interest Group (1980). KUN81 Kuntze, Robert E. MVP-Forth untuk Apple II. Mountain View Press (1981). LAX84 Laxen, H. dan Perry, M. F83 untuk PC IBM. Versi 2.1.0 (1984). Didistribusikan oleh penulis, tersedia dari Forth Interest Group atau GEnie. LOE81 Loeliger, R. G. Threaded Interpretive Languages. BYTE Publications (1981), ISBN 0-07-038360-X. Mungkin satu-satunya buku yang pernah ditulis tentang pembuatan kernel seperti Forth (contoh yang digunakan adalah Z80). Layak jika Anda bisa menemukan salinannya. MPE92 MicroProcessor Engineering Ltd MPE Z8Super8 PowerForth Target. MPE Ltd 133 Hill Lane, Shirley, Southampton, S01 5AF, Inggris (Juni 1992). Produk komersial PAY90 Payne, William H. Embedded Controller FORTH untuk keluarga 8.051. Academic Press (1990), ISBN 0-12-547570-5. Ini adalah kuotot yang lengkap untuk Forth 8051, termasuk metacompiler untuk PC IBM. File hardcopy saja bisa diunduh dari GEnie. Bukan untuk sersan SER90 Sersan, Frank, Pygmy Forth untuk PC IBM. Versi 1.3 (1990). Didistribusikan oleh penulis, tersedia dari Forth Interest Group. Versi 1.4 sekarang tersedia di GEnie, dan sepadan dengan usaha ekstra untuk mendapatkan. TAL80 Talbot, R. J. fig-Forth untuk tahun 6809. Forth Interest Group (1980). Catatan penulis untuk publikasi web: file yang sebelumnya tersedia di layanan online GEnie sekarang tersedia dari server FTP Forth Interest Group, ftp: ftp.forth.orgpubForth .XanEdu menyediakan konten, teknologi dan layanan khusus untuk pemimpin bisnis dan pendidikan. Kebutuhan belajar akademik dan profesional berubah lebih cepat dari sebelumnya. Sejak tahun 1999, XanEdu telah membantu ribuan mitra untuk beradaptasi dan berkembang dengan memberikan kombinasi teknologi, konten dan layanan profesional yang tepat untuk mendukung tujuan mereka dalam bergerak maju. Dari platform berbasis SAAS kami untuk penyebaran konten mobile yang cepat, layanan editorial dan publikasi terampil untuk pendidik, hingga solusi keterjangkauan dan keterlibatan untuk toko buku, XanEdu menyediakan solusi sederhana yang membantu mitra kami mempersiapkan kebutuhan belajar besok hari ini. WHO KAMI MELAYANI Temukan jalur yang lebih cepat menuju kinerja yang lebih tinggi dengan penyebaran konten seluler yang cepat. Kembangkan materi yang terjangkau seunik institusi, kursus, dan siswa Anda. Menyesuaikan bahan dengan tujuan kurikulum, mengendalikan biaya dan melibatkan siswa mobile centric saat ini. Jaga tim Anda sejalan dengan perubahan kebijakan, peraturan dan proses yang penting.
Strategi-strategi crossover-crossover-trading
Jenis-sistem-perdagangan alternatif