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

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

Вернуться   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(
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(
<= 0){
        
writeLn("Размер должен быть > 0");
        goto 
error;
    }
        
setLength(array,n);
        for(
0;i<n;inc(i)){
            
read("n["+i+"] = ",array[i]);
        }
        
writeLn("Наибольший элемент: "+getMaxElement(array));
    }

ну и конечно же байт-код:

03 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
31lload 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
1113 0 3 0 3 1 3 1 //ENTRY POINT
120sconst "Введите размер массива:"
123bconst 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"
149invokevirtual 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["
192lload 2
195
i2s
196
sconcat
197
sconst "] = "
200sconcat
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 "Наибольший элемент: "
230lload 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, время: 00:45.


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