Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.07.2011, 16:02   #21
f.hump
C/C++, Asm
Участник клуба
 
Аватар для f.hump
 
Регистрация: 02.03.2010
Сообщений: 1,323
По умолчанию

таки, да, не скомпилится.

по теме:
начинаю подозревать, что самый быстрый режим работы процессора - 64-х битный.
16 регистров общего назначения, 16 xmm/ymm, native 64 арифметика, 64-битная адресация (винда, конечно, только 8Тб разрешает адресовать, но и это я думаю не мало).
f.hump вне форума Ответить с цитированием
Старый 26.07.2011, 16:15   #22
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
начинаю подозревать, что самый быстрый режим работы процессора - 64-х битный.
16 регистров общего назначения, 16 xmm/ymm, native 64 арифметика, 64-битная адресация (винда, конечно, только 8Тб разрешает адресовать, но и это я думаю не мало).
ну про винду речь не идет, так как там потери на нужды системы.
да и 8ТБ то вирт памяти, физических объемов то еще нет таких.
а вообще, вы правы.

кстати, насчет работает надо смотреть в офф документации.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 26.07.2011, 16:32   #23
Goodwin98
equ asm
Участник клуба
 
Аватар для Goodwin98
 
Регистрация: 02.05.2009
Сообщений: 1,605
По умолчанию

даже нинаю... а почему никто не потестит хотя бы в вирт машине работают команды или проц перезагружается ?(
Какой вопрос - такой ответ. Не забываем пользоваться поиском, гуглом.
Помощь в выполнении работ по ассемблеру ICQ:2725322O4
Goodwin98 вне форума Ответить с цитированием
Старый 26.07.2011, 16:39   #24
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

это как?

мы программисты, а не тестеры, нам надо спорить, пробовать неинтересно
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 27.07.2011, 01:50   #25
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Ну вот можно страшнообраз дискеты собрать в FASM
Считалка длины строки с буфером 8 байт с MMX на голом железе прекрасно работает.

Код:
format binary as 'img'
org 7C00h
start:
        jmp     short boot
        nop

b08_OEM         db 'LOL_BOOT'
wSecSize        dw 512
bSecsPerCluster db 1
wResSecs        dw 1
bNumFATs        db 2
wRootEntries    dw 224
wTotSecs        dw 2880
bMedia          db 0F0h
wSecsPerFAT     dw 9
wSecsPerTrack   dw 18
wHeads          dw 2
dHiddenSecs     dd 0
dBigTotSecs     dd 0
bDrive          db 0
unused          db 0
bExtBootSig     db 29h
dSerNum         dd 0FFFFFFFFh
b11_VolumeLabel db 11 dup ('X')
b08_FileSysID   db 'FAT12   '

; boot sector

boot:
use16
        xor     ax, ax
        mov     ds, ax

        mov     esi, string
        call    MMX_Find_String_Length
        mov     eax, ecx
        mov     ebx, 10d
        mov     edi, buffer
        call    IntToStr
        mov     esi, length
        call    Write_String
        mov     esi, buffer
        call    Write_String
        jmp     $

; esi <- 8 byte aligned string
; ecx -> length in bytes
align 8
MMX_Find_String_Length:
        push    eax
        push    ebx
        push    esi
        mov     ebx, temp_qword
        pxor    mm1, mm1
        xor     ecx, ecx

.compare_loop:
        movq    mm2, qword[esi]
        pcmpeqb mm2, mm1
        movq    qword[ebx], mm2
        cmp     dword[ebx], 0
        jnz     .first_dword_has_a_hit
        cmp     dword[ebx+4],0
        jnz     .second_dword_has_a_hit

        add     ecx, 8
        add     esi, 8
        jmp     .compare_loop

.second_dword_has_a_hit:
        add     ecx, 4
        mov     eax, [ebx+4]
        jmp     .start_byte_testing

.first_dword_has_a_hit:
        mov     eax, [ebx]

.start_byte_testing:
        mov     edx, eax
        and     edx, 0x000000ff
        jnz     .done
        inc     ecx
        mov     edx, eax
        and     edx, 0x0000ff00
        jnz     .done
        inc     ecx
        mov     edx, eax
        and     edx, 0x00ff0000
        jnz     .done
        inc     ecx
        mov     edx, eax
        and     edx, 0xff000000

.done:
        pop     esi
        pop     ebx
        pop     eax
        ret
align 8
        temp_qword  dq 0

IntToStr:
;  eax <- number
;  ebx <- base
;  edi <-> buffer
        xor  ecx, ecx
.new:
        xor  edx, edx
        div  ebx
        push edx
        inc  ecx
        and  eax, eax
        jnz  .new
.loop:
        pop  eax
        add  al, 30h
        cmp  al, '9'
        jng  .ok
        add  al, 7
.ok:
        stosb
        loop .loop
        ret

Write_String:
; DS:SI <- string
        mov  ah, 0xE
        xor  bh, bh
        mov  bl, 0x7
.nextchar:
        lodsb           
        or  al,al
        jz  .return
        int  10h
        jmp .nextchar
.return:
        ret

        string      db 'Hi guys, you know we are always trying to find the best routines to optimize.', 0
        length      db 'Length: ', 0
        buffer      db '   bytes',0

rb 7C00h + 512 - 2 - $
db 055h, 0AAh

; FAT1, FAT2
db 0F0h, 0FFh, 0FFh
db 11FDh dup (0)
db 0F0h, 0FFh, 0FFh
db 11FDh dup (0)

; Root directory
db 1C00h dup (0)

; Free space
db 163E00h dup (0F6h)
пыщь
JTG вне форума Ответить с цитированием
Старый 27.07.2011, 02:02   #26
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
b08_OEM         db 'LOL_BOOT'
Код:
format binary as 'img'
а as тут это задание расширения по умолчанию?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 27.07.2011, 02:14   #27
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

угу_______
пыщь
JTG вне форума Ответить с цитированием
Старый 27.07.2011, 09:48   #28
Tronix
Форумчанин
 
Аватар для Tronix
 
Регистрация: 15.06.2010
Сообщений: 740
По умолчанию

Ну я же говорил. А f.hump нам тут какие-то сказки про инициализацию досом процессора рассказывал и тд. Конечно все команды расширения процессора работают под голым реалмодом, без всяких там инициализаций. ЧТД, как говорица.
Чтобы понять рекурсию, сперва нужно понять рекурсию.
Tronix вне форума Ответить с цитированием
Старый 29.07.2011, 08:52   #29
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

Цитата:
Сообщение от f.hump Посмотреть сообщение
по теме:
начинаю подозревать, что самый быстрый режим работы процессора - 64-х битный.
16 регистров общего назначения, 16 xmm/ymm, native 64 арифметика, 64-битная адресация (винда, конечно, только 8Тб разрешает адресовать, но и это я думаю не мало).
64-х битный режим точно не претендует на звание самого быстрого режима.
либо реальный либо защищённый. тут надо тесты проводить
rpy3uH вне форума Ответить с цитированием
Старый 29.07.2011, 11:31   #30
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

rpy3uH, он действительно самый быстрый, если конечно работать в этом режиме с rax, а не eax.
а если работать в 64-битах, как в 32-ух, то разницы скорее всего и не будет вовсе.
(кстати насколько я помню, 64-ех битный режим, не может быть не защищенным, или не помню уже)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Самый быстрый браузер Marsel737 Софт 31 30.08.2010 01:09
Самый быстрый способ получить изображение в заданном прямоугольнике? TwiX Мультимедиа в Delphi 4 04.04.2010 10:08
Самый быстрый способ проверить прокси? TwiX Работа с сетью в Delphi 6 15.02.2010 22:41
Самый быстрый вид сортировки массива Warnes Свободное общение 42 06.12.2009 16:02
Предложите самый быстрый алгоритм! Gambler Общие вопросы Delphi 6 26.12.2006 22:44