Важная информация

User Tag List

Страница 2 из 4 ПерваяПервая 1234 ПоследняяПоследняя
Показано с 11 по 20 из 36

Тема: Создание кросскомпилятора языка Оберон для Z80

  1. #11
    Veteran Аватар для Oleg N. Cher
    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,593
    Спасибо Благодарностей отдано 
    2,159
    Спасибо Благодарностей получено 
    130
    Поблагодарили
    96 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от vinxru Посмотреть сообщение
    Я бы на вашем месте сделал макросы и include. С помощью них можно реализовать даже шаблоны (template) на языке типа C, гораздо более гибкие (и еще менее поддающиеся отладке ), чем на C++.
    А ещё шаблоны можно реализовать на Обероне и без макросов: http://sage.com.ua/ru.shtml?e1l5

    Цитата Сообщение от alone Посмотреть сообщение
    Графические есть.
    Озвучьте, если я что-то упустил.

  2. #12
    Guru
    Регистрация
    03.01.2006
    Адрес
    Рязань
    Сообщений
    2,935
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

  3. #13
    Banned
    Регистрация
    01.12.2010
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,657
    Записей в дневнике
    21
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    А ещё шаблоны можно реализовать на Обероне и без макросов: http://sage.com.ua/ru.shtml?e1l5
    Шаблоны, это когда компилятор пишет за тебя обертки над list. Вот у вас в статье приведен код, на Си++ он был бы "list<longint>".

  4. #14
    Banned
    Регистрация
    01.12.2010
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,657
    Записей в дневнике
    21
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Код:
    01	TYPE
    01.1	    TEMPLATE<CLASS XXX>
    02	    ListStdItem = POINTER TO RECORD
    03	        value: XXX;
    04	    END;
    
    Теперь у нас есть все возможные типы ListStdItem<LONGINT>, ListStdItem<DOUBLE>, ListStdItem<STRING>, ListStdItem<ListStdItem<STRING>> и т.п.
    
    05
    05.1	    TEMPLATE<CLASS XXX>
    06	    StdList = OBJECT
    07	        VAR
    08	            list: List;
    09	             
    10	        PROCEDURE &New(options: SET);
    11	        BEGIN
    12	            NEW(list, Compare, options)
    13	        END New;
    14	         
    15	        PROCEDURE Compare(first, second: ANY): LONGINT;
    16	        VAR
    17	            nFirst, nSecond: XXX;
    18	        BEGIN
    19	            nFirst := first(ListStdItem<XXX>).value;
    20	            nSecond := second(ListStdItem<XXX>).value;
    21	            IF nFirst < nSecond THEN
    22	                RETURN -1
    23	            ELSIF nFirst > nSecond THEN
    24	                RETURN 1
    25	            ELSE
    26	                RETURN 0
    27	            END
    28	        END Compare;
    29	                 
    30	        PROCEDURE Add(x: XXX);
    31	        VAR
    32	            item: ListStdItem<XXX>;
    33	        BEGIN
    34	            NEW(item);
    35	            item.value := x;
    36	            list.Add(item)
    37	        END Add;
    38	         
    39	        PROCEDURE Insert(pos: LONGINT; x: XXX);
    40	        VAR
    41	            item: ListStdItem<XXX>;
    42	        BEGIN
    43	            NEW(item);
    44	            item.value := x;
    45	            list.Insert(pos, item)
    46	        END Insert;
    47	         
    48	        PROCEDURE Remove(i: LONGINT);
    49	        BEGIN
    50	            list.Remove(i)
    51	        END Remove;
    52	         
    53	        PROCEDURE IndexOf(x: XXX): LONGINT;
    54	        VAR
    55	            item: ListStdItem<XXX>;
    56	        BEGIN
    57	            NEW(item);
    58	            item.value := x;
    59	            RETURN list.IndexOf(item)
    60	        END IndexOf;
    61	         
    62	        PROCEDURE GetCount(): LONGINT;
    63	        BEGIN
    64	            RETURN list.GetCount()
    65	        END GetCount;
    66	         
    67	        PROCEDURE GetItem(i: LONGINT): XXX;
    68	        VAR
    69	            item: ANY;
    70	        BEGIN
    71	            item := list.GetItem(i);
    72	            RETURN item(ListStdItem<XXX>).value
    73	        END GetItem;
    74	             
    75	    END LongintList;
    
    Теперь у нас есть все возможные типы StdList<LONGINT>, StdList<DOUBLE>, StdList<STRING>, StdList<StdList<STRING>> и т.п.
    Последний раз редактировалось vinxru; 15.03.2012 в 13:13.

  5. #15
    Moderator
    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,577
    Спасибо Благодарностей отдано 
    61
    Спасибо Благодарностей получено 
    106
    Поблагодарили
    92 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от alone Посмотреть сообщение
    Вот кстати - да.
    SDCC или Z88dk?
    Кто чем пользуется, какие + и - ?
    Лучше сделать и жалеть, чем не сделать и жалеть.

    Некоторые из моих поделок тут: https://github.com/serge-404

  6. #16
    Sinclair User Аватар для Eltaron
    Регистрация
    16.01.2005
    Адрес
    Ekaterinburg
    Сообщений
    2,045
    Записей в дневнике
    7
    Спасибо Благодарностей отдано 
    143
    Спасибо Благодарностей получено 
    463
    Поблагодарили
    326 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Error404 Посмотреть сообщение
    Вот кстати - да.
    SDCC или Z88dk?
    Кто чем пользуется, какие + и - ?
    Надо портировать под sdcc либы z88dk, и у последнего вообще плюсов не останется
    Хороших си компайлера только два - sdcc и iar. Удобный только один - sdcc.
    Я к нему еще и отладчик прикрутил, через gdb и ZXMAK2. Соберу всё под винду и зарелижу.
    Граф Дракула наш кумир, патамушта он вомпир!
    VKINK 9 : BORDER NOT PI

  7. #16
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  8. #17
    Master
    Регистрация
    04.03.2005
    Адрес
    Ukraine, Kiev
    Сообщений
    792
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    5 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Talking

    У меня такой вопрос:

    1. В конце процедуры, например, "add" есть запись "END Add;", поймёт ли он просто "END;" ?

    2. Красным выделю вариант. Меня интересует поймёт ли компилятор ?

    Код:
    	        PROCEDURE Compare(first, second: ANY): LONGINT;
    	        VAR
    	            nFirst, nSecond: XXX;
    	        BEGIN
    	            nFirst := first(ListStdItem<XXX>).value;
    	            nSecond := second(ListStdItem<XXX>).value;
    	            IF nFirst < nSecond THEN
    	                RETURN -1
    	            ELSIF nFirst > nSecond THEN BEGIN
    	                RETURN 1;
    	            END ELSE BEGIN
    	                RETURN 0;
    	            END;
    	        END Compare;
    3. Как компилятор относится к регистру в тексте ? Могу ли я объявить процедуру Большими символами, а вызывать её маленькими ?
    AAA когда меня режут, я терплю, но когда дополняют, становится нестерпимо.

  9. #18
    ZEK
    Гость

    По умолчанию

    Цитата Сообщение от Robus Посмотреть сообщение
    поймёт ли он просто "END;" ?
    Нет, имя обязательно

    Цитата Сообщение от Robus Посмотреть сообщение
    Красным выделю вариант. Меня интересует поймёт ли компилятор
    Нет, скобки begin-end больше нет

    Цитата Сообщение от Robus Посмотреть сообщение
    Могу ли я объявить процедуру Большими символами, а вызывать её маленькими ?
    Нет , регистрочувствителен

  10. #19
    Moderator
    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,577
    Спасибо Благодарностей отдано 
    61
    Спасибо Благодарностей получено 
    106
    Поблагодарили
    92 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Eltaron Посмотреть сообщение
    Я к нему еще и отладчик прикрутил, через gdb и ZXMAK2. Соберу всё под винду и зарелижу.
    Отладчик source-level ?
    Лучше сделать и жалеть, чем не сделать и жалеть.

    Некоторые из моих поделок тут: https://github.com/serge-404

  11. #20
    Sinclair User Аватар для Eltaron
    Регистрация
    16.01.2005
    Адрес
    Ekaterinburg
    Сообщений
    2,045
    Записей в дневнике
    7
    Спасибо Благодарностей отдано 
    143
    Спасибо Благодарностей получено 
    463
    Поблагодарили
    326 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Error404 Посмотреть сообщение
    Отладчик source-level ?
    Ага, точки останова прямо в сишном коде.
    Граф Дракула наш кумир, патамушта он вомпир!
    VKINK 9 : BORDER NOT PI

Страница 2 из 4 ПерваяПервая 1234 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Создание форума
    от CityAceE в разделе Форум
    Ответов: 43
    Последнее: 10.07.2016, 22:23
  2. Ответов: 172
    Последнее: 10.12.2012, 18:36

Ваши права

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