push ebp
mov ebp, esp
push [ebp+8]
push CLOSURE_CTOR_INFO
mov eax, HELPER_FUNC
call eax
add esp, 8
leave ret
push ebp
mov ebp, esp
mov eax, [ebp+0C] ; запоминаем аргументный буфер в регистр eax, чтобы проще было обращаться
push [eax] ; извлекаем первый аргумент из аргументного буфера и кладём на стек
push [ebp+8] ; кладём на стек первый аргумент thunk'а: ссылку на this
mov eax, 0077a7B6
call eax ; вызываем реальный метод
add esp, 8 ; подчищаем, ибо cdecl
leave
ret
Цитата: Алексей Гринь от января 5, 2015, 21:19
ГриньСкрипт и нативный код
Цитата: Тайльнемер от января 11, 2015, 17:41Я как-то кое-кому анонимно показывал, все блеванули от моего синтаксиса, хотя он мне кажется довольно ортогональным (в ущерб визуальной элегантности). Думаю решить это с помощью шаблонов потом как-нибудь. Дело в том, что в языке отсутствуют понятия типа if/then или for/next, как в Smalltalk'е. Вместо этого используется вызов методов + замыкания (как в Smalltak'е, но при этом язык не динамический). Сам вызов методов имеет синтаксис как в Haskell'е, а синтаксис замыканий — смесь Паскаля с Obj-C. Поэтому код с control flow имеет чуть больше знаков препинания, чем людям хотелось бы. Но мне главное не синтаксис, а семантика, так что...
Ух ты!
Цитата: Алексей Гринь от января 11, 2015, 11:14Ух ты!
для первого публичного релиза
Цитата: Bhudh от января 11, 2015, 10:45Алгоритм такой: записываешь в eax по очереди значения 80000002H, 80000003H и 80000004H и каждый раз вызываешь инструкцию cpuid. Каждый раз он возвращает по четыре байта в eax, ebx, ecx и edx.
Хм. А в какой кодировке там записываются строки? ANSI?
Страница создана за 0.052 сек. Запросов: 24.