Blitzmax
Среда, 22.01.2025, 18:01
Приветствую Вас Гость | RSS
 
Главная РегистрацияВход
Меню сайта
Наш опрос
Оцените скорость работы с сайтом
Всего ответов: 112
Главная » 2008 » Апрель » 08
Я тут ударился в объединение Blitzmax и Assembler. Получилось. В связи с этим скоро выложу статейку как интегрировать ассемблер с Blitzmax. А пока обнаружился еще один ужос - качество кода, производимого Blitzmax. Я добавил это в Неприятное в BlitzMax, ч.1 - язык по нумером 21. А для ленивых кратко здесь:

Простейшая функция:
function _RDT:long()
    return 111
endfunction

Сгенерированный Blitzmax код:
    push    ebp
    mov    ebp,esp
    sub    esp,8
    mov    edx,dword [ebp+8]
    mov    dword [ebp-8],111
    mov    dword [ebp-4],0
_3:
    mov    eax,dword [ebp-8]
    mov    dword [edx],eax
    mov    eax,dword [ebp-4]
    mov    dword [edx+4],eax
    mov    esp,ebp
    pop    ebp
    ret

Это же просто ужас. Зачем метка внутри? - она не используется! Ну это еще ладно. Зачем отнимается от указателя стека 8 в начале? Что за манипуляции с ним между BP и DX?  А вот аналогичный нормальный код, выполняющий ту-же задачу:
        push    ebp
        mov     ebp,dword[esp+8]
        mov     dword [ebp],111
        mov     dword [ebp+4],0
        pop     ebp
        ret

Просмотров: 1017 | Добавил: oxid | Дата: 08.04.2008 | Комментарии (0)

Форма входа
Календарь новостей
«  Апрель 2008  »
ПнВтСрЧтПтСбВс
 123456
78910111213
14151617181920
21222324252627
282930
Поиск
Ссылки
Статистика
Copyright Oxid © 2025
Сайт создан в системе uCoz