Привіт Гість ( Вхід | Реєстрація )

> учим Cи
A1ex01
Aug 27 2013, 23:12
Пост #1


round catcher)
********

Група: Trusted Members
Повідомлень: 1 389
З нами з: 27-August 08
З: Kyiv
Користувач №: 809
Стать: Чол
Парк машин:
хз*X2/2/500/хз*5870 ц7x64



сабж, а заодно и асм х86
пока меня интересуют консольные приложения(работа с бинарными файлами), остановился на gcc(именно си, а не си++) под линух(debian)

предлагаю тут кидать ссылки на интересные мануалы/примеры или просто постить примеры
(Show/Hide)


ну для начала "хелло... ", кудаж без него)
создаем файл hello.c (gedit, например)

#include <stdio.h>
int main()
{
printf("Hello ...!\n" );
return(0);
}

компильнуть- gcc hello.c
запустить файл ./a.out
кл-во байт под переменные:

#include<stdio.h>
/*size of variable types*/
int main()
{
printf("int=%d  short int=%d \n",  sizeof(int),  sizeof(short int));
printf("signed int=%d  unsigned int=%d \n",  sizeof(signed int),  sizeof(unsigned int));
printf("char=%d  unsigned char=%d \n",  sizeof(char),  sizeof(unsigned char));
return 0;
}


работа с файлами
(Show/Hide)


1(ru)
2(eng)
Справочник(ru)

int fseek( FILE * filestream, long int offset, int origin ); Функция fseek перемещает указатель позиции в потоке
filestream Указатель на объект типа FILE, идентифицируемый поток, offset Количество байт для смещения, относительно некоторого положения указателя, origin Позиция указателя, относительно которой будет выполняться смещение. SEEK_SET -Начало файла, SEEK_CUR -Текущее положение файла, SEEK_END -Конец файла

фрагменты asm книг у гугля(тут куча книг, омг))
под линух асм имеет чуть другой формат
доки для мак, оптимизации

мой черновик задачи №1(осталось допилить чуток)
(Show/Hide)

задача #1:
написать прогу для вычисления хешей для 64 байтовых блоков из входного файла и запись результата в другой файл
т.е. прочитал 64 байт, получил хеш, записал и так далее. На выходе файл будет в ~2 раза меньше исходного

#include <stdio.h>
unsigned long int rotr (unsigned long int a, char b)
{/* analog asm ror a,b */
    return ((a>>b)|(a<<(32-b)));
}

unsigned long int inFileSize=0, w[64], s0, s1;
int i, i2, readedBytes=0;
char readBuffer[64];

FILE *myFile, *myFile2;
unsigned long int a,b,c,d,e,f,g,h,t1,t2,sum0,sum1,Ma,Ch,k[64] ={
   0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5, 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,
   0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3, 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,
   0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC, 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,
   0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7, 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,
   0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13, 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,
   0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3, 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,
   0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5, 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,
   0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208, 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2},
h0 = 0x6A09E667,
h1 = 0xBB67AE85,
h2 = 0x3C6EF372,
h3 = 0xA54FF53A,
h4 = 0x510E527F,
h5 = 0x9B05688C,
h6 = 0x1F83D9AB,
h7 = 0x5BE0CD19;

int main(int argc, char *argv[])
{
printf("input file name is '%s'\n", argv[1] );
if (argc==1) return(1);
myFile = fopen (argv[1], "rb");
myFile2 = fopen("out", "wb");
    
do
{
    fseek(myFile, inFileSize++*64, SEEK_SET);
    readedBytes=fread(readBuffer, 1, 64, myFile);
    printf("seek@=%d\n", inFileSize);
asm
(
    /* copy 16(10h) doubleWords from readBuffer[] to w[]*/
    "movl $0x10, %ecx\n\t"
    "leal readBuffer,%esi\n\t"
    "leal w,%edi\n\t"
    "cld\n\t"
    "rep movsl\n\t"
);
    for (i=16; i<64;i++)
{
    s0=rotr(w[i-15],7)^rotr(w[i-15],18)^(w[i-15]>>3);
    s1=rotr(w[i-2],17)^rotr(w[i-2],19)^(w[i-2]>>10);
    w[i]=w[i-16]+s0+w[i-7]+s1;
}
    a= h0;
    b= h1;
    c= h2;
    d= h3;
    e= h4;
    f= h5;
    g= h6;
    h= h7;

    for (i=0; i<64;i++)
{
    sum0=    rotr(a, 2)^rotr(a, 13)^rotr (a, 22);
    Ma=    (a &b)^(a &c)^(b &c);
    t2=    sum0 + Ma;
    sum1=    rotr(e, 6)^rotr(e, 11)^rotr(e, 25);
    Ch=    (e &f)^((~e) &g);
    t1=    h +sum1 +Ch +k[i] +w[i];

    h= g;
    g= f;
    f= e;
    e= d  +t1;
    d= c;
    c= b;
    b= a;
    a= t2 +t1;
}
    h0= h0 +a;
    h1= h1 +b;
    h2= h2 +c;
    h3= h3 +d;
    h4= h4 +e;
    h5= h5 +f;
    h6= h6 +g;
    h7= h7 +h;

    w[0]=h0;
    w[1]=h1;
    w[2]=h2;
    w[3]=h3;
    w[4]=h4;
    w[5]=h5;
    w[6]=h6;
    w[7]=h7;
    

    fwrite(w, 1, 8*4, myFile2);
}
while (readedBytes==64);

fclose(myFile2);
fclose(myFile);
printf("bytes readed last time=%d\n Total file size=%d\n", readedBytes,  --inFileSize*64+readedBytes);
return(0);
}



--------------------
Stats: RC5-72 OGR-(26 /27 /28 ) Mag@(free-dc /boinc)
support: BTC 3Po6aejsoZM7bQvo138fuYwaLc67bzMfEr
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
2 Сторінки V  1 2 >  
Reply to this topicStart new topic
Відповідей(1 - 14)
Rilian
Aug 27 2013, 23:19
Пост #2


interstellar
**********

Група: Team member
Повідомлень: 17 340
З нами з: 22-February 06
З: Ванкувер
Користувач №: 184
Стать: НеСкажу
Free-DC_CPID
Парк машин:
ноут и кусок сервера



A1ex01, емае, учи Руби! Могу тебе мастер класс устроить в Киеве

http://learnxinyminutes.com/docs/c/


--------------------
(Show/Hide)

Миссия проекта Help Fight Childhood Cancer (Помоги Победить Детский Рак) - подобрать белки, блокирующие некоторые виды рака. Подключайтесь!
IPB Image
IPB Image

IPB Image

IPB Image
IPB Image

общая статистика: BOINCstats * FreeDC команда: BOINC команда Ukraine

IPB Image
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
A1ex01
Aug 27 2013, 23:22
Пост #3


round catcher)
********

Група: Trusted Members
Повідомлень: 1 389
З нами з: 27-August 08
З: Kyiv
Користувач №: 809
Стать: Чол
Парк машин:
хз*X2/2/500/хз*5870 ц7x64



а чем руби лучше? (планирую постепенно подойти к опенЦл для видях +На будущее под боинк переводить проекты, может... )

по Си нагуглить можно кучу ссылок, предлагаю постить именно то, что сам заценил как полезное, понятное...


--------------------
Stats: RC5-72 OGR-(26 /27 /28 ) Mag@(free-dc /boinc)
support: BTC 3Po6aejsoZM7bQvo138fuYwaLc67bzMfEr
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Rilian
Aug 27 2013, 23:29
Пост #4


interstellar
**********

Група: Team member
Повідомлень: 17 340
З нами з: 22-February 06
З: Ванкувер
Користувач №: 184
Стать: НеСкажу
Free-DC_CPID
Парк машин:
ноут и кусок сервера



QUOTE(A1ex01 @ Aug 28 2013, 00:22) *

а чем руби лучше?

как минимум тем что на руби ты напишешь свой софт раз в 50 быстрее и качественнее

по поводу опенцл, тут да, все специфичнее. но это edge case smile.gif


--------------------
(Show/Hide)

Миссия проекта Help Fight Childhood Cancer (Помоги Победить Детский Рак) - подобрать белки, блокирующие некоторые виды рака. Подключайтесь!
IPB Image
IPB Image

IPB Image

IPB Image
IPB Image

общая статистика: BOINCstats * FreeDC команда: BOINC команда Ukraine

IPB Image
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
tiss
Aug 28 2013, 08:47
Пост #5


Мега ранчер
********

Група: Moderators
Повідомлень: 1 662
З нами з: 28-February 09
Користувач №: 952
Стать: Чол
Free-DC_CPID



QUOTE(Rilian @ Aug 28 2013, 00:29) *

как минимум тем что на руби ты напишешь свой софт раз в 50 быстрее и качественнее


Руби это интерпретатор или есть с него компилятор?


--------------------
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
arminV
Aug 28 2013, 08:55
Пост #6


кранчер зі стажем
******

Група: Trusted Members
Повідомлень: 261
З нами з: 29-February 12
Користувач №: 2 926
Стать: bot



(A1ex01 @ Aug 28 2013, 00:12) *

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

предлагаю тут кидать ссылки на интересные мануалы/примеры или просто постить примеры
(Show/Hide)


ну для начала "хелло... ", кудаж без него)

создаем файл hello.c
#include <stdio.h>
int main()
{
printf("Hello ...!\n" );
return(0);
}
компильнуть -gcc hello.c
запустить файл ./a.out


почему gcc и линукс?
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
A1ex01
Aug 28 2013, 09:21
Пост #7


round catcher)
********

Група: Trusted Members
Повідомлень: 1 389
З нами з: 27-August 08
З: Kyiv
Користувач №: 809
Стать: Чол
Парк машин:
хз*X2/2/500/хз*5870 ц7x64



gcc идет с любым линухом +повод привыкать к нему)

компильнуть под виндой потом не проблема, надеюсь


--------------------
Stats: RC5-72 OGR-(26 /27 /28 ) Mag@(free-dc /boinc)
support: BTC 3Po6aejsoZM7bQvo138fuYwaLc67bzMfEr
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
arminV
Aug 28 2013, 10:40
Пост #8


кранчер зі стажем
******

Група: Trusted Members
Повідомлень: 261
З нами з: 29-February 12
Користувач №: 2 926
Стать: bot



В том-то и дело, что есть различия)
Как минимум, библиотеки могут не совпасть
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Rilian
Aug 28 2013, 10:44
Пост #9


interstellar
**********

Група: Team member
Повідомлень: 17 340
З нами з: 22-February 06
З: Ванкувер
Користувач №: 184
Стать: НеСкажу
Free-DC_CPID
Парк машин:
ноут и кусок сервера



http://eax.me/haskell-opengl/


--------------------
(Show/Hide)

Миссия проекта Help Fight Childhood Cancer (Помоги Победить Детский Рак) - подобрать белки, блокирующие некоторые виды рака. Подключайтесь!
IPB Image
IPB Image

IPB Image

IPB Image
IPB Image

общая статистика: BOINCstats * FreeDC команда: BOINC команда Ukraine

IPB Image
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
A1ex01
Aug 28 2013, 10:53
Пост #10


round catcher)
********

Група: Trusted Members
Повідомлень: 1 389
З нами з: 27-August 08
З: Kyiv
Користувач №: 809
Стать: Чол
Парк машин:
хз*X2/2/500/хз*5870 ц7x64



спасибо, почитал, вот бы еще по openCl примеров(для компутинга на видяхах)...


--------------------
Stats: RC5-72 OGR-(26 /27 /28 ) Mag@(free-dc /boinc)
support: BTC 3Po6aejsoZM7bQvo138fuYwaLc67bzMfEr
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
LSA
Aug 28 2013, 11:17
Пост #11


кранчер з фермою
*******

Група: Trusted Members
Повідомлень: 626
З нами з: 7-October 07
З: Kyiv
Користувач №: 596
Стать: Чол
Free-DC_CPID
Парк машин:
Й9450 8G DDR2 QA90 16G DDR3 GTX 482



http://habrahabr.ru/post/73526/


--------------------
(Show/Hide)


GF100 GF114
+++++,++++

<a href="http://allprojectstats.com/showuser.php?id=1333992"><img src="http://allprojectstats.com/s1333992m0a.png" border=0>
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
eugeny
Aug 30 2013, 10:07
Пост #12


кранчер зі стажем
******

Група: Trusted Members
Повідомлень: 437
З нами з: 2-May 09
З: Запорожье
Користувач №: 1 016
Стать: Чол
Free-DC_CPID
Парк машин:
i7-8700K@4300 32GB@3200 GTX1080Ti@1900



Я в лихих 90-х в школе учил по этой книге: worthy.gif
(Show/Hide)



--------------------
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Rilian
Sep 1 2013, 17:11
Пост #13


interstellar
**********

Група: Team member
Повідомлень: 17 340
З нами з: 22-February 06
З: Ванкувер
Користувач №: 184
Стать: НеСкажу
Free-DC_CPID
Парк машин:
ноут и кусок сервера



статья которую надо читать перед написанием нового проекта http://habrahabr.ru/post/117193/

и закинуть такие справочники подальше smile.gif


--------------------
(Show/Hide)

Миссия проекта Help Fight Childhood Cancer (Помоги Победить Детский Рак) - подобрать белки, блокирующие некоторые виды рака. Подключайтесь!
IPB Image
IPB Image

IPB Image

IPB Image
IPB Image

общая статистика: BOINCstats * FreeDC команда: BOINC команда Ukraine

IPB Image
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
tiss
Sep 1 2013, 20:30
Пост #14


Мега ранчер
********

Група: Moderators
Повідомлень: 1 662
З нами з: 28-February 09
Користувач №: 952
Стать: Чол
Free-DC_CPID



QUOTE(Rilian @ Sep 1 2013, 18:11) *

статья которую надо читать перед написанием нового проекта http://habrahabr.ru/post/117193/


Удод он. Типичное мышление прикладного программиста с большим похуизмом на конечного пользователя.


--------------------
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Rilian
Sep 1 2013, 20:45
Пост #15


interstellar
**********

Група: Team member
Повідомлень: 17 340
З нами з: 22-February 06
З: Ванкувер
Користувач №: 184
Стать: НеСкажу
Free-DC_CPID
Парк машин:
ноут и кусок сервера



tiss, объясни ?


--------------------
(Show/Hide)

Миссия проекта Help Fight Childhood Cancer (Помоги Победить Детский Рак) - подобрать белки, блокирующие некоторые виды рака. Подключайтесь!
IPB Image
IPB Image

IPB Image

IPB Image
IPB Image

общая статистика: BOINCstats * FreeDC команда: BOINC команда Ukraine

IPB Image
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

2 Сторінки V  1 2 >
Reply to this topicStart new topic
1 Користувачів переглядають дану тему (1 Гостей і 0 Прихованих Користувачів)
0 Користувачів:

 



- Lo-Fi Версія Поточний час: 21st November 2019 - 02:06

Rambler's Top100 Рейтинг@Mail.ru
Invision Power Board v1.3.3 © 1996 IPS, Inc.