Игорь Пашев

Jul. 4th, 2011

12:39 am - НОД на ассемблере (x86, 32 бита, линукс)

https://github.com/ip1981/GCD/blob/master/assembler/gcd-x86-linux.s

Невероятный по красоте способ перевода строки в целое число
(http://www.cyberforum.ru/archive/t-214807.html):

str2uint_loop:
    lodsb # going forward from esi
    # HINT: assert '0' <= al <= '9'
    lea    (%ebx, %ebx, 4), %ebx # ebx = 4*ebx + ebx = 5*ebx ;-)
    lea -48(%eax, %ebx, 2), %ebx # ebx = 2*ebx + %eax - 48
                                 # ebx is multiplied by 10 each iteration,
                                 # eax-48 will be multiplied at the next iteration ;-)
    loop str2uint_loop
    ret


Алсо поупражнялся с GDB.
Алсо в планах Солярка и 64 бита.

Tags: , , ,
(Оставить комментарий)

Mar. 25th, 2011

06:19 pm - Linux vs Solaris

http://www.softpanorama.org/Articles/Linux_vs_Solaris/Introduction/historical_dimension_of_solaris_vs_linux_debate.shtml

This list definitely can be continued but the statement that I want to make is that rumors about linux being an innovative OS are greatly exaggerated :-). Moreover Linux track record in innovation looks pale even in comparison with other major branches of commercial Unixes each of which also introduced important parts of modern Unix infrastructure that linux reimplemented. For example AIX introduced concept of volume manager (licensed from Veritas but actually pretty native for all IBM Operative system products with idiosyncratic distinction between physical and logical drives which comes from the days of OS/360) and one of the first really successful in production implementations on Unix of paravirtualization (Lpars in AIX).


I would like to stress it again that it was Microsoft XENIX not linux, which created most of the infrastructure for Unix on Intel including the critical mass of books. Whether we like it on not linux owes much of its success to Microsoft: it was XENIX which provided all (yes, all) the major technical solutions and infrastructure used by each and every subsequent Intel Unix implementation. Moreover even later after abandoning Unix in favor of OS/2 Microsoft indirectly subsidized all Unixes on Intel as the de-facto owner of PC standard: hardware that any Intel based Unix is running on is created by OEMs using the standards that Microsoft license for free to all PC manufactures and the cost of this hardware is mainly determined by the size of the market created by Microsoft OSes. Plug and play hardware specification is a nice example of Microsoft contribution to linux success here. Whether we like Microsoft or not, the simplest and reasonably precise definition of PC always was "Microsoft compatible computer". As the most recent example it was actually Microsoft who politely and firmly explained to Intel that it should provide hardware compatibility with Opteron and not to reinvent the 64-bit extensions wheel. For Intel breach of relations with Microsoft was too serious threat to ignore. That's just one example of how Microsoft provides and defends unification and standardization of hardware platform often mistakenly called Intel-platform, but which properly should be called Microsoft-Intel platform, the platform that linux uses for free without any investments. In this respect one can state that linux is just a side effect of Microsoft success in hardware. The undeniable fact is that linux is critically dependent on Microsoft-subsidized hardware and without Microsoft success there would never be any linux as mass, supported by such companies as IBM and HP, operating system. I think that Linux Towards should seriously consider adding Microsoft to the list of kernel contributors ;-).

Tags: ,
(1 комментарий | Оставить комментарий)

Nov. 17th, 2010

09:40 pm

Чтоб не забыть: минимальная программа на ассемблере,
выводящая "Hello!" (без glibc)

.data

msg:
    .string "Hello!\n"
    .set length, . - msg - 1

.text
.globl _start

_start:
    movl    $4, %eax
    movl    $1, %ebx
    movl    $msg, %ecx
    movl    $length, %edx
    int     $0x80

    movl    $1, %eax
    xorl    %ebx, %ebx
    int     $0x80


Компилировать так:
gcc -nostdlib hello.s -o hello
Размер — 623 байта.

Подробности тут http://ru.wikibooks.org/wiki/Ассемблер_в_Linux_для_программистов_C

Tags: , ,
(5 комментариев | Оставить комментарий)

Apr. 19th, 2010

07:37 pm - FFMPEG, OGG

Если что-то надо закодировать, кодирую в OGG.

ffmpeg -i input.avi -vcodec libtheora -b 1000k -acodec libvorbis -aq 6 -f ogg -y output.ogg

-i input.avi - исходный файл

-vcodec libtheora - видеокодек (Теора, не втроенная, а сторонняя)
-acodec libvorbis - аудиокодек (Ворбис, не встроенный, а сторонний)

-b 1000k - битрейт видео (можно заменить на -sameq - "как оригинал")
-aq 6 - качество звука (http://www.vorbis.com/faq/#quality)

-f ogg - формат контейнера (бывают ещё mkv, flv)
Вроде, распознаётся по расширению, но на фсякий случай ;-)

-y - перезаписать, если существует, выходной файл output.ogg
(иначе ffmpeg переспросит)

Встроенные кодеки - без приставки lib (theora, vorbis).
Теоры встроенной ещё нет, Ворбис - есть (ffmpeg-2010-02-28),
но встроенный Ворбис умеет только двухканальный звук
и монофонические дорожки не переваривает.
Для встроенного кодека Ворбис надо указывать
не качество (-aq), а тоже битрейт (-ab)



Чтобы выдрать и записать только звук,
надо заменить -vcodec libtheora -b 1000k на -vn.

Чтобы выдрать и записать только изображение,
надо заменить -acodec libvorbis -aq 6 на -an

Tags: , , , ,
(Оставить комментарий)

Dec. 15th, 2008

04:49 pm - Когда переустановка Mesa не помогает, и причём здесь перезагрузка.

Слака клонирована с компьютера с видеокартой (и драйверами) NVIDIA,
на ноутбук с полностью интеловской начинкой (и видеокартой 965GM).
Драйвера Mesa переустановлены, и аппаратный ускоритель заработал.
До перезагрузки.

Смотрим: )

Tags: , , , ,
(Оставить комментарий)

Dec. 8th, 2008

08:24 pm - Мой WiFi

Сегодня смущал персонал "Компьютерного мира"
выясняя начинку USB-адаптеров беспроводной сети.
Они ничего сказать не могли, в документах
и на коробке ничего не написано. С мобильника сходил в Гугл,
выяснил, что Asus WL-167G мне подойдёт (для линукса).

Воткнул:

# lsusb
...
Bus 001 Device 027: ID 0b05:1723 ASUSTek Computer, Inc. WL-167G v2 802.11g Adapter [ralink]
...

# dmesg
....
usbcore: registered new interface driver rt73usb

# lsmod
Module                  Size  Used by
rt73usb                27776  0
rt2x00usb              12672  1 rt73usb
rt2x00lib              21504  2 rt73usb,rt2x00usb
rfkill                  9488  1 rt2x00lib
input_polldev           7304  1 rt2x00lib
crc_itu_t               5760  1 rt2x00lib
mac80211              122124  2 rt2x00usb,rt2x00lib
cfg80211               14600  1 mac80211
...

# iwconfig
...
wlan0     IEEE 802.11g  ESSID:""
          Mode:Managed  Channel:0  Access Point: Not-Associated
          Tx-Power=0 dBm
          Retry min limit:7   RTS thr:off   Fragment thr=2346 B
          Encryption key:off
          Link Quality:0  Signal level:0  Noise level:0
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0
...


Есть надежда :-)
http://www.ralinktech.com/ralink/Home/Support/Linux.html
Ralink is very active in the Linux community, and provides source code for many of its client drivers to developers.

Tags: , ,
(Оставить комментарий)

Nov. 27th, 2008

02:15 pm - План9 на ядре Линукс

http://www.osnews.com/story/20588/Glendix_Bringing_the_Beauty_of_Plan_9_to_Linux
http://glendix.org/

Tags: ,
(Оставить комментарий)