The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Стабильный релиз MASM-совместимого открытого ассемблера JWAS..."
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Разговоры, обсуждение новостей (Public)
Изначальное сообщение [ Отслеживать ]

"Стабильный релиз MASM-совместимого открытого ассемблера JWAS..."  +/
Сообщение от opennews (??) on 01-Фев-10, 13:30 
Вышла (http://www.japheth.de/JWasm/History.txt) новая стабильная версия ассемблера JWASM 2.02 (http://www.japheth.de/JWasm.html), продолжающего развитие проекта Open Watcom (WASM). Код JWASM распространяется под открытой лицензией Sybase Open Watcom Public License, одобренной организацией OSI. JWASM поддерживает синтаксис ассемблера MASM (Microsoft Macro Assembler) и позволяет генерировать исполняемые файлы в форматах OMF, MS Coff (32- и 64-bit), Elf (32- и 64-bit), Bin и DOS MZ  для платформ Linux, Windows, OS/2 и FreeBSD.

URL: http://developers.slashdot.org/story/10/01/29/1632253/x86-As...
Новость: http://www.opennet.dev/opennews/art.shtml?num=25241

Высказать мнение | Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Стабильный релиз MASM-совместимого открытого ассемблера JWAS..."  +/
Сообщение от Аноним (??) on 01-Фев-10, 13:30 
masm ценен скорее инклудами, чем синтаксисом.
Так что не под Windows преимуществ нет. Ну только если привык кто-то.
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

2. "Стабильный релиз MASM-совместимого открытого ассемблера JWAS..."  +/
Сообщение от pavlinux (ok) on 01-Фев-10, 14:46 
sizeof есть!!! :)

;--- "hello world" for 64-bit Linux, using SYSCALL.
;--- assemble: JWasm -elf64 -Fo=Lin64_1.o Lin64_1.asm
;--- link:     gcc Lin64_1.o -o Lin64_1

stdout    equ 1
SYS_WRITE equ 1
SYS_EXIT  equ 60

    .data

string  db 10,"Hello, world!",10

    .code

_start:
    mov edx, sizeof string
    mov rsi, offset string
    mov edi, stdout
    mov eax, SYS_WRITE
    syscall
    mov eax, SYS_EXIT
    syscall

    end _start


Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

8. "Стабильный релиз MASM-совместимого открытого ассемблера JWAS..."  +/
Сообщение от Аноним (??) on 02-Фев-10, 10:22 
MASM относится к меткам, как к переменным. ИМХО надо - как к адресам (нет в ассемблере переменных), правда тогда и sizeof не будет. Будет разница адресов меток до и после.
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

3. "Стабильный релиз MASM-совместимого открытого ассемблера JWAS..."  +1 +/
Сообщение от Аноним (??) on 01-Фев-10, 14:55 
Жаль, о JWASM'е мало знают, а ведь автор в одиночку довёл его от уровня недомасма 5.1 до masm32 9.0. Даже страницу в википедии удалили из-за малого количества просмотров. (( Ассемблер по возможностям like nothing before. )))
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

4. "Стабильный релиз MASM-совместимого открытого ассемблера JWAS..."  –1 +/
Сообщение от pavlinux (ok) on 01-Фев-10, 15:01 
>Жаль, о JWASM'е мало знают, а ведь автор в одиночку довёл его
>от уровня недомасма 5.1 до masm32 9.0. Даже страницу в википедии
>удалили из-за малого количества просмотров. (( Ассемблер по возможностям
> like nothing before. )))

Все думали, что OpenSource породит обилие различных решений одной задачи.
А в итоге, он породил стадо ленивых программистов, которые не то чтобы
изобретают велосипеды, ездят на старых, причем не смазывая и на дырявых шинах.

АСМ сейчас используют, наверно только микроконтролерщики, и железяко-программеры.

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

5. "Стабильный релиз MASM-совместимого открытого ассемблера JWAS..."  –1 +/
Сообщение от sdfsdfsdf email on 01-Фев-10, 15:49 
и верно... :-)

ну вот какой толк для программиста персанальных компьютеров (и уж темболее серверов) (?)

...хотя для разработчиков операционных систем -- ASM и понадобиться.... но тут уж врядле MASM-форматы :-)

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

6. "Стабильный релиз MASM-совместимого открытого ассемблера JWAS..."  +1 +/
Сообщение от User294 (ok) on 01-Фев-10, 19:21 
>АСМ сейчас используют, наверно только микроконтролерщики, и железяко-программеры.

Еще как минимум писатели кодеков и подобной байды. Потому что с небольшими асмовыми вставками в считанные критичные места - разница выходит чуть ли не в разы.

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

7. "Стабильный релиз MASM-совместимого открытого ассемблера JWAS..."  –1 +/
Сообщение от pavlinux (ok) on 02-Фев-10, 00:47 
>>АСМ сейчас используют, наверно только микроконтролерщики, и железяко-программеры.
>
>Еще как минимум писатели кодеков и подобной байды. Потому что с небольшими
>асмовыми вставками в считанные критичные места - разница выходит чуть ли
>не в разы.

Портабельно?
На PPC ARM MIPS64 так же весело заработает?
Не?! Следовательно это оптимизация по определённый процессор.
Читай первую строчку.

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

9. "Стабильный релиз MASM-совместимого открытого ассемблера JWAS..."  +/
Сообщение от anonim on 02-Фев-10, 10:51 
>PPC ARM MIPS64

Да пока многим начхать на эти архитектуры. "Танки" пока x86, и там где область хоть сколько-то связанная с большими вычислениям надолго занята ими.

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

10. "Стабильный релиз MASM-совместимого открытого ассемблера JWAS..."  +/
Сообщение от pavlinux (ok) on 02-Фев-10, 13:50 
>>PPC ARM MIPS64
>Да пока многим начхать на эти архитектуры. "Танки" пока x86, и там
>где область хоть сколько-то связанная с большими вычислениям надолго занята ими.
>

Не уверен что софт для просчёта, скажем, столкновения двух чёрных дыр, написан с элементами асма.
Выгодней посчитать неделю на кластере, чем 3 месяца оптимизировать.
А вот всякий там реалтайм, медицинская хрен, навигационная...  

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

11. "Стабильный релиз MASM-совместимого открытого ассемблера JWAS..."  +/
Сообщение от Piter_Ring email(ok) on 02-Фев-10, 22:24 
Знаю одного астронома-програмиста, так он рассказывал что софт
весь написан на С (не с++). А вот куски именно математики очень часто
написаны на фортране/асме и собраны в .обж а затем уже включены в основную прогу.
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

12. "Стабильный релиз MASM-совместимого открытого ассемблера JWAS..."  +/
Сообщение от pavlinux (ok) on 03-Фев-10, 01:54 
>Знаю одного астронома-програмиста, так он рассказывал что софт
>весь написан на С (не с++). А вот куски именно математики очень
>часто написаны на фортране/асме и собраны в .обж а затем уже включены в
>основную прогу.

Ну если есть заготовки, то почему бы их не использовать,
а для фортрана ой как много библиотек.  
Ну а асм... я вот ещё не разу не видел кода на асме для параллельных вычислений.

Есть тут виртуозы ассемблера... покажите как на чистом асме
выглядит прога для вычисления SUM(1/x, от 1 до 2^32), на 4-х процах.


Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

13. "Стабильный релиз MASM-совместимого открытого ассемблера JWAS..."  +/
Сообщение от Аноним (??) on 03-Фев-10, 08:50 
1/x это вроде как не целое число, такое на GPU считают. (тоже можно на асме кстати)
SUM это похоже сумма, человечество ни когда не испытывало трудностей с её параллельным вычислением. Отдельно для 4 отрезков посчитать, а потом сложить, как будто и не параллельно считали.
Или я чего-то не понял в задаче...
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

15. "Стабильный релиз MASM-совместимого открытого ассемблера JWAS..."  +/
Сообщение от pavlinux (ok) on 03-Фев-10, 14:57 
>1/x это вроде как не целое число, такое на GPU считают. (тоже

Опа,  x87 или SSE уже никатит? :)

CPU0:
     fld1
     fld ST1, x
     fdivp ST(0), ST(1)

CPU1:
      fld1
      fld ST1, x
      fadd ST(1), cpu1      
      fdivp ST(0), ST(1)

CPU2:
      fld1
      fld  ST(1), x
      fadd ST(1), cpu2      
      fdivp ST(0), ST(1)

CPU3:
      fld1
      fld ST1, x
      fadd ST(1), cpu3      
      fdivp ST(0), ST(1)

как эту хрень распределить по процам???

>можно на асме кстати)
>SUM это похоже сумма, человечество ни когда не испытывало трудностей с её
>параллельным вычислением. Отдельно для 4 отрезков посчитать, а потом сложить, как
>будто и не параллельно считали.
>Или я чего-то не понял в задаче...

Всё прально...

BEGIN:
       CPU0 += 1/x;
       CPU1 += 1/(x+1);
       CPU2 += 1/(x+2);
       CPU3 += 1/(x+3);
       x++;
       x *= NUMCPUS;

GOTO BEGIN;

      СOMMON += CPU0 + CPU1 + CPU2 + CPU3;

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

16. "Стабильный релиз MASM-совместимого открытого ассемблера JWAS..."  +/
Сообщение от Аноним (??) on 03-Фев-10, 16:41 
>Опа,  x87 или SSE уже никатит? :)

Так скорость нужна или нет? На GPU для этого параллельные конвейеры.

>как эту хрень распределить по процам???

:-)
Написать 4 программы:
BEGIN:
       CPU += 1/x;
       x++;
GOTO BEGIN;
Первая посчитает для х от 1 до 1073741824 и выведет результат на stdout
Вторая от 1073741825 до 2147483648
2147483649-3221225472
3221225473-4294967296

4 однозадачных программы OS развесит на разные CPU, когда они завершатся каждая выдаст на stdout по одному числу, их надо сложить :-)

А если серьёзно в коде нельзя указать на каком CPU работать (это не влезая в дебри)
Но можно создать процессы (разные CPU, память, стек; один код), и потоки (разные CPU, стек; один код и память). Язык значения не имеет.

Например 2 потока:
CPU1                               CPU2
mov rax,1                          mov rax,7
mov [12345],rax               push rax
push rax                           mov [12345],rax
mov rax,[12345] ;(7)
pop rax ;(1)

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

17. "Стабильный релиз MASM-совместимого открытого ассемблера JWAS..."  +/
Сообщение от pavlinux (ok) on 03-Фев-10, 17:39 
>>Опа,  x87 или SSE уже никатит? :)
>Так скорость нужна или нет? На GPU для этого параллельные конвейеры.
>>как эту хрень распределить по процам???
>А если серьёзно в коде нельзя указать на каком CPU работать
>Но можно создать процессы (разные CPU, память, стек; один код), и потоки
>(разные CPU, стек; один код и память). Язык значения не имеет.

Опа, оказывается x86 настолько корявый....


8.4.4.1 Typical BSP Initialization Sequence

After the BSP and APs have been selected (by means of a hardware protocol, see
Section 8.4.3, “MP Initialization Protocol Algorithm for Intel Xeon Processors”), the
BSP begins executing BIOS boot-strap code (POST) at the normal IA-32 architecture
starting address (FFFF FFF0H). The boot-strap code typically performs the following
operations:
1. Initializes memory.
2. Loads the microcode update into the processor.
3. Initializes the MTRRs.
4. Enables the caches.
5. Executes the CPUID instruction with a value of 0H in the EAX register, then reads
the EBX, ECX, and EDX registers to determine if the BSP is “GenuineIntel.”
6. Executes the CPUID instruction with a value of 1H in the EAX register, then saves
the values in the EAX, ECX, and EDX registers in a system configuration space in
RAM for use later.
7. Loads start-up code for the AP to execute into a 4-KByte page in the lower 1
MByte of memory.
8. Switches to protected mode and ensures that the APIC address space is mapped
to the strong uncacheable (UC) memory type.
9. Determine the BSP’s APIC ID from the local APIC ID register (default is 0), the
code snippet below is an example that applies to logical processors in a system
whose local APIC units operate in xAPIC mode that APIC registers are accessed
using memory mapped interface:


MOV ESI, APIC_ID; Address of local APIC ID register
MOV EAX, [ESI];
AND EAX, 0FF000000H; Zero out all other bits except APIC ID
MOV BOOT_ID, EAX; Save in memory

Saves the APIC ID in the ACPI and MP tables and optionally in the system config-
uration space in RAM.
10. Converts the base address of the 4-KByte page for the AP’s bootup code into 8-bit
vector. The 8-bit vector defines the address of a 4-KByte page in the real-address
mode address space (1-MByte space). For example, a vector of 0BDH specifies a
start-up memory address of 000BD000H.
11. Enables the local APIC by setting bit 8 of the APIC spurious vector register (SVR).

MOV ESI, SVR; Address of SVR
MOV EAX, [ESI];
OR EAX, APIC_ENABLED; Set bit 8 to enable (0 on reset)
MOV [ESI], EAX;

12. Sets up the LVT error handling entry by establishing an 8-bit vector for the APIC
error handler.

MOV ESI, LVT3;
MOV EAX, [ESI];
AND EAX, FFFFFF00H; Clear out previous vector.
OR EAX, 000000xxH; xx is the 8-bit vector the APIC error handler.
MOV [ESI], EAX;

13. Initializes the Lock Semaphore variable VACANT to 00H. The APs use this
semaphore to determine the order in which they execute BIOS AP initialization
code.
14. Performs the following operation to set up the BSP to detect the presence of APs
in the system and the number of processors:
— Sets the value of the COUNT variable to 1.
— Starts a timer (set for an approximate interval of 100 milliseconds). In the AP
BIOS initialization code, the AP will increment the COUNT variable to indicate
its presence. When the timer expires, the BSP checks the value of the COUNT
variable. If the timer expires and the COUNT variable has not been incre-
mented, no APs are present or some error has occurred.
15. Broadcasts an INIT-SIPI-SIPI IPI sequence to the APs to wake them up and
initialize them:

MOV ESI, ICR_LOW; Load address of ICR low dword into ESI.
MOV EAX, 000C4500H; Load ICR encoding for broadcast INIT IPI
; to all APs into EAX.
MOV [ESI], EAX; Broadcast INIT IPI to all APs
; 10-millisecond delay loop.
MOV EAX, 000C46XXH; Load ICR encoding for broadcast SIPI IP
; to all APs into EAX, where xx is the vector computed in step 10.
MOV [ESI], EAX; Broadcast SIPI IPI to all APs
; 200-microsecond delay loop
MOV [ESI], EAX; Broadcast second SIPI IPI to all APs
; 200-microsecond delay loop
Step 15:
MOV EAX, 000C46XXH; Load ICR encoding from broadcast SIPI IP
; to all APs into EAX where xx is the vector computed in step 8.

16. Waits for the timer interrupt.
17. Reads and evaluates the COUNT variable and establishes a processor count.
18. If necessary, reconfigures the APIC and continues with the remaining system
diagnostics as appropriate.
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

18. "Стабильный релиз MASM-совместимого открытого ассемблера JWAS..."  +/
Сообщение от pavlinux (ok) on 03-Фев-10, 18:07 
>>Опа,  x87 или SSE уже никатит? :)
>>как эту хрень распределить по процам???
>А если серьёзно в коде нельзя указать на каком CPU работать

http://stackoverflow.com/questions/1622388/running-code-on-d...

В общам, x86 - это SMP лохотрон с последовательным применением APIC

Теперь ясно, почему IBM z/OS, s390, VAX/VMS в свое время, таких бешеных денег стоят.

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

14. "Стабильный релиз MASM-совместимого открытого ассемблера JWAS..."  +/
Сообщение от Piter_Ring email(ok) on 03-Фев-10, 13:39 
точно знаю, что на асме там есть кусок для быстрого разложения в ряды.
Как это считается - не скажу, да и врят ли там реализована паралельная работа
(основной код написан в 80-90ых годах) Зато там есть вычисления на кластере.

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру