LINUX.ORG.RU

некий спрашивать про написания в java на ассемблере

С каким акцентом это нужно произносить?

anonymous
()
Ответ на: комментарий от anonymous

С каким акцентом это нужно произносить?

с таким: «дасвиданя дарагой!»

anonymous
()
Ответ на: комментарий от menangen

Да не, самое норм в ынтерпрайзе зафигачить jna-обёрточку к самописной posix-only либе на сишечке, всем нравится.

evilface ★★
()
Ответ на: комментарий от menangen

жаберы жутко боятся непереносимого кода, читай ассемблера

В связи с последними событиями ассемблер не то чтобы стал популярен, но его вытащили из угла и сдули пыль.

Кстати, может кому-то будет интересно, TASM жив, но называется по-другому, и принадлежит другой конторе.

По сабжу: сочетать яву с асмом всё-равно как если курить дубовые листья. Дым тот же, но уши всё-равно опухнут =)

Deleted
()
Ответ на: комментарий от ozz_is_here

Шутка про однополый секс в следующей главе.

Deleted
()

так это его статья. ну, Стива

bvn13 ★★★★★
()
Ответ на: комментарий от int64

Паньгин правильно в комментариях пишет, что есть ещё способ с VMStructs. То чувство, когда облажался дважды: мог же посмотреть о чем он рассказывает на JPoint, да и про VMStructs можно было догадаться

В общем, думаю основная линейка будет продолжаться про Грааль, но в апреле после доклада Паньгина нужно будет сделать спин-офф с VMStructs, Panama и JNR (JNR-x86asm в данном случае)

stevejobs ★★★★☆
()
Последнее исправление: stevejobs (всего исправлений: 1)
Ответ на: комментарий от stevejobs

офтопик

Пардон, офтопик. Прям душу разбередили всю с этим ассемблером )

Нашел свой код 1995 года (Turbo Basic, 16-bit x86)

dim tmp(18)
out &h3ce,5
out &h3cf,1
def seg = varseg(tmp(0))
poke varptr(tmp(0))+0,&h90
poke varptr(tmp(0))+1,&hb8
poke varptr(tmp(0))+2,&h00
poke varptr(tmp(0))+3,&ha0
poke varptr(tmp(0))+4,&h8e
poke varptr(tmp(0))+5,&hc0
poke varptr(tmp(0))+6,&hbe
poke varptr(tmp(0))+7,&h80
poke varptr(tmp(0))+8,&h02
poke varptr(tmp(0))+9,&hbf
poke varptr(tmp(0))+10,&h00
poke varptr(tmp(0))+11,&hb0
poke varptr(tmp(0))+12,&hb9
poke varptr(tmp(0))+13,&hf0
poke varptr(tmp(0))+14,&h00
poke varptr(tmp(0))+15,&h26
poke varptr(tmp(0))+16,&h8a
poke varptr(tmp(0))+17,&h04
poke varptr(tmp(0))+18,&h26
poke varptr(tmp(0))+19,&h88
poke varptr(tmp(0))+20,&h05
poke varptr(tmp(0))+21,&h26
poke varptr(tmp(0))+22,&h8a
poke varptr(tmp(0))+23,&h44
poke varptr(tmp(0))+24,&h01
poke varptr(tmp(0))+25,&h26
poke varptr(tmp(0))+26,&h88
poke varptr(tmp(0))+27,&h45
poke varptr(tmp(0))+28,&h01
poke varptr(tmp(0))+29,&h83
poke varptr(tmp(0))+30,&hc7
poke varptr(tmp(0))+31,&h02
poke varptr(tmp(0))+32,&h83
poke varptr(tmp(0))+33,&hc6
poke varptr(tmp(0))+34,&h50
poke varptr(tmp(0))+35,&he2
poke varptr(tmp(0))+36,&hea
poke varptr(tmp(0))+37,&hcb
Label = varptr(tmp(0))+1
call absolute Label
def seg
out &h3ce,5
out &h3cf,0
Сейчас полчаса вспоминал/разбирался, что это я там делал и зачем.

Чуть позже, помню еще что-то про MMX было (когда БПФ уже хотелось на них делать, а С в эти модные регистры ещё не умел). Всплакнул. Всё напрочь забыл. Дворники тоже стране нужны (с).

Deleted
()
Ответ на: офтопик от Deleted
00000000 <.data>:
   0:	90                   	nop
   1:	b8 00 a0             	mov    $0xa000,%ax
   4:	8e c0                	mov    %ax,%es
   6:	be 80 02             	mov    $0x280,%si
   9:	bf 00 b0             	mov    $0xb000,%di
   c:	b9 f0 00             	mov    $0xf0,%cx
   f:	26 8a 04             	mov    %es:(%si),%al
  12:	26 88 05             	mov    %al,%es:(%di)
  15:	26 8a 44 01          	mov    %es:0x1(%si),%al
  19:	26 88 45 01          	mov    %al,%es:0x1(%di)
  1d:	83 c7 02             	add    $0x2,%di
  20:	83 c6 50             	add    $0x50,%si
  23:	e2 ea                	loop   0xf
  25:	cb                   	lret  

Не вполне ясно, что делается. Зачем nop в начале? Сразу 16 бит (в ax) нельзя читать одной инструкцией? Зачем вообще копировать через регистр? Я нагуглил, что write mode 1 это копирование без переноса в память хоста, но внятного описания так и не нашёл.

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

Да кто ж вспомнит-то. Скорее всего это еще раньше писалось, просто сейчас нашел у себя в архиве за 95й год.

nop - возможно для выравнивания по границе слова. А может и просто дурень писал.

А делается копирование куска памяти прямо на видеопамять. Сам Basic так не умел. Там вручную (прерыванием int 0x10 (???)) графический режим устанавливался и все примитивы графические вручную реализовывались. Как и шрифты. Стандартный Basic ни режим SVGA не умел, ни тем более кириллицу. Поэтому каждую букву точками рисовал. И впихивал в видеопамять насильно куски.

Как-так... Вроде... Кажись.. )

Deleted
()
Ответ на: комментарий от Deleted

А делается копирование куска памяти прямо на видеопамять.

Неа. Смотри, ты в es кладёшь 0xa000, так? И при копировании используешь es как для источника, так и для назначения. Этот код копирует из видеопамяти в видеопамять. Память хоста тут не используется.

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

Ух... Значит полчаса было мало ) Пойду, еще подумаю чего это я там нахеровертил. Работало же, точно работало )

Deleted
()
Ответ на: комментарий от stevejobs

Волнуетесь что ваш ребенок попадет в плохую компанию? Заставьте его писать на ассемблере и основательно комментировать свой код!

anonymous
()
Ответ на: комментарий от Deleted

В связи с последними событиями

оба чём речь?

anonymous
()

Любопытно, а стиви вообще работающий код-то пишет или исключительно имиджевое евангелие от сбертеха?

aedeph_ ★★
()
Ответ на: комментарий от aedeph_

Когда-то писал, а сейчас не знаю.

Deleted
()
Ответ на: комментарий от i-rinat

Кажется разобрался.

Там 640х480х16. 12 режим. По 80 байт на строчку в 4 слоя. Итого 480*80 = 38400 (0x9600) - это всё что видно на экране. Соответственно, всё что после A000:9601 не видно, и я его использую как карманы. Нарисовал что-то по точкам один раз, скопировал за пределы видимости эту область и держу там, пока её перерисовать не надо будет целиком. Как понадобилась - так всю площадь и вставил, не считая снова точки. Конкретно в этом куске копипасты - копирование в карман элемента интерфейса слева на экране. В другим кусках - другие карманы или вставляются, или сохраняются.

Вроде так.

http://ipic.su/7yybWr.jpg

Это что-то из короткого преподавательского прошлого. Детей учить - это вам не компутеры курочить. Не сдюжил. Убёг.

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.