Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для мобильных телефонов > JAVA Micro Edition

JAVA Micro Edition Низкоуровневое программирование мобильных телефонов.

Ответ
 
Опции темы
Старый 18.06.2012, 03:34   #1
foldel
Оператор ЭВМ
 
Аватар для foldel
 
Регистрация: 18.11.2010
Сообщений: 23
Написано 0 полезных сообщений
(для 0 пользователей)
Shrimp - компилятор для телефона

Вот на летних каникулах нечем занятся. Решил я написать свой "маленький" компилятор для мобильного телефона.

Вот что получилось:
пример программы(поиск максимального элемента массива)

program MaxElement{
    function 
getMaxElement(Integer array[]):Integer;
    var{
        
Integer i,max;
    }
    {
        if(
length(array) == 0){
        return 
0;
    }
        
max = array[0];
        for(
i = 1;i<length(array);inc(i)){
        if(array[
i] > max){
            
max = array[i];
        }
    }
return 
max;
}
    function 
main():void;
    
label{
        
error;
    }
    var{
        
Integer[] array;
        
Integer n,i;
    }
    {
    
error:
    
read("Введите размер массива:",n);
    if(
n <= 0){
        
writeLn("Размер должен быть > 0");
        goto 
error;
    }
        
setLength(array,n);
        for(
i = 0;i<n;inc(i)){
            
read("n["+i+"] = ",array[i]);
        }
        
writeLn("Наибольший элемент: "+getMaxElement(array));
    }
} 
ну и конечно же байт-код:

0: 3 1 3 0 3 1 3 1
9
: lload 0
12
: arraylength 3
14
: iconst 0
19
: if_icmpeq
20
: ifne 31
25
: iconst 0
30
: return
31: lload 0
34
: iconst 0
39
: iaload
40
: lstore 2
43
: ipop
44
: iconst 1
49
: lstore 1
52
: ipop
53
: lload 1
56
: lload 0
59
: arraylength 3
61
: if_icmplt
62
: ifne 107
67
: lload 0
70
: lload 1
73
: iaload
74
: lload 2
77
: if_icmpgt
78
: ifne 94
83
: lload 0
86
: lload 1
89
: iaload
90
: lstore 2
93
: ipop
94
: lload 1
97
: inc
98
: lstore 1
101
: ipop
102
: goto 53
107
: lload 2
110
: return
111: 3 0 3 0 3 1 3 1 //ENTRY POINT
120: sconst "Введите размер массива:"
123: bconst 3
125
: invokevirtual 3 2
128
: lstore 1
131
: ipop
132
: lload 1
135
: iconst 0
140
: if_icmple
141
: ifne 157
146
: sconst "Размер должен быть > 0"
149: invokevirtual 3 0
152
: goto 120
157
: lload 0
160
: lload 1
163
: setarraylength 3 1 0
168
: iconst 0
173
: lstore 2
176
: ipop
177
: lload 2
180
: lload 1
183
: if_icmplt
184
: ifne 227
189
: sconst "n["
192: lload 2
195
: i2s
196
: sconcat
197
: sconst "] = "
200: sconcat
201
: bconst 3
203
: invokevirtual 3 2
206
: lload 0
209
: lload 2
212
: iastore
213
: ipop
214
: lload 2
217
: inc
218
: lstore 2
221
: ipop
222
: goto 177
227
: sconst "Наибольший элемент: "
230: lload 0
233
: invoke 0
238
: i2s
239
: sconcat
240
: invokevirtual 3 0
243
: return 
log:

Введите размер массива:
-45
Размер должен быть > 0
Введите размер массива:
5
n[0] =
4
n[1] =
6
n[2] =
3
n[3] =
7
n[4] =
-5
Наибольший элемент: 7

Time: 10.875 second(s)
Integer value: empty, pointer: -1
Real value: empty, pointer: -1
String value: empty, pointer: -1
Object value: empty, pointer: -1

Вопрос:
стоит ли мне продолжать это дело(является ли оно актуальным) и как вообще идея?
(Offline)
 
Ответить с цитированием
Старый 18.06.2012, 11:40   #2
Igor
Мастер
 
Аватар для Igor
 
Регистрация: 03.05.2010
Адрес: Подмосковье
Сообщений: 1,218
Написано 438 полезных сообщений
(для 790 пользователей)
Ответ: Shrimp - компилятор для телефона

оО шикарно если это работает. А то иногда под руками только телефон, а надо что-нибудь проверить. Я хотел что-то такое сделать, но дальше интерпретатора выражений с переменными не ушёл( Если будет нужна помощь - пиши.
__________________
О¯О ¡¡¡ʁɔvʎнdǝʚǝdǝu dиW
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 23:48.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com