Задать вопрос
  • Переслать данные из второй в третью переменную. Абсолютная адресация на ассемблере?

    jcmvbkbc
    @jcmvbkbc
    ZIK1, чтобы сделать глобальными надо их определения вынести из функции:
    int A;
    int B;
    
    int _tmain(int argc, _TCHAR* argv[])
    {
      A = 1;
      B = 7;
      ...
  • Переслать данные из второй в третью переменную. Абсолютная адресация на ассемблере?

    jcmvbkbc
    @jcmvbkbc
    Так?

    ZIK1, всё верно


    но со 2 я не могу понять
    абсолютная адресация по типу: MOV ЕAX, [0xFF00];

    Тоже верно. В квадратных скобках должен стоять адрес в памяти Или имя переменной с фиксированным адресом. Стек всё время меняется, поэтому адресация стека всегда как минимум косвенная. Но если сделать твои переменные статическими или глобальными, они получат фиксированный адрес в памяти.
  • Как написать сортировку пузырьком с помощью кодов процессора dp32?

    jcmvbkbc
    @jcmvbkbc
    Прекрасно. dp32 -- это отладочная плата, а не процессор. Процессор на ней -- PIC32MX250F12B, с набором инструкций MIPS32 M4K. Описание этого набора инструкций есть в этом мануале, в главе 11 -- это тот самый справочник, который тебе нужен.

    Следующий шаг -- написать программу сортировки пузырьком на ассемблере MIPS32 M4K. После этого можно будет перевести каждую инструкцию в двоичный вид по таблицам из гл. 11.2 документа по ссылке выше. Ну или воспользоваться программой-ассемблером для MIPS.
  • Как написать сортировку пузырьком с помощью кодов процессора dp32?

    jcmvbkbc
    @jcmvbkbc
    Ок, значит VHDL тут ни при чём. Продолжим.

    Что такое процессор dp32? Я нашёл вот это, это оно или нет?
  • Выполнение shell-команды при коннекте к dropbear. Как?

    jcmvbkbc
    @jcmvbkbc
    У меня под рукой есть старый dropbear, с ним всё ок:
    $ ssh -p 2222 -v 127.0.0.1 "cd / ; ls -la"
    OpenSSH_6.7p1 Debian-5+deb8u3, OpenSSL 1.0.1t  3 May 2016
    debug1: Reading configuration data /home/jcmvbkbc/.ssh/config
    debug1: /home/jcmvbkbc/.ssh/config line 36: Applying options for 127.0.0.1
    debug1: Reading configuration data /etc/ssh/ssh_config
    debug1: /etc/ssh/ssh_config line 19: Applying options for *
    debug1: Connecting to 127.0.0.1 [127.0.0.1] port 2222.
    debug1: Connection established.
    debug1: identity file /home/jcmvbkbc/.ssh/id_rsa type 1
    debug1: key_load_public: No such file or directory
    debug1: identity file /home/jcmvbkbc/.ssh/id_rsa-cert type -1
    debug1: key_load_public: No such file or directory
    debug1: identity file /home/jcmvbkbc/.ssh/id_dsa type -1
    debug1: key_load_public: No such file or directory
    debug1: identity file /home/jcmvbkbc/.ssh/id_dsa-cert type -1
    debug1: key_load_public: No such file or directory
    debug1: identity file /home/jcmvbkbc/.ssh/id_ecdsa type -1
    debug1: key_load_public: No such file or directory
    debug1: identity file /home/jcmvbkbc/.ssh/id_ecdsa-cert type -1
    debug1: key_load_public: No such file or directory
    debug1: identity file /home/jcmvbkbc/.ssh/id_ed25519 type -1
    debug1: key_load_public: No such file or directory
    debug1: identity file /home/jcmvbkbc/.ssh/id_ed25519-cert type -1
    debug1: Enabling compatibility mode for protocol 2.0
    debug1: Local version string SSH-2.0-OpenSSH_6.7p1 Debian-5+deb8u3
    debug1: Remote protocol version 2.0, remote software version dropbear_2014.65
    debug1: no match: dropbear_2014.65
    debug1: SSH2_MSG_KEXINIT sent
    debug1: SSH2_MSG_KEXINIT received
    debug1: kex: server->client aes128-ctr hmac-sha1 none
    debug1: kex: client->server aes128-ctr hmac-sha1 none
    debug1: sending SSH2_MSG_KEX_ECDH_INIT
    debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
    debug1: Server host key: RSA e3:32:41:14:0f:fa:0b:0e:c7:6d:18:e8:12:a6:b5:28
    Password authentication is disabled to avoid man-in-the-middle attacks.
    Keyboard-interactive authentication is disabled to avoid man-in-the-middle attacks.
    debug1: SSH2_MSG_NEWKEYS sent
    debug1: expecting SSH2_MSG_NEWKEYS
    debug1: SSH2_MSG_NEWKEYS received
    debug1: SSH2_MSG_SERVICE_REQUEST sent
    debug1: SSH2_MSG_SERVICE_ACCEPT received
    debug1: Authentications that can continue: publickey,password
    debug1: Next authentication method: publickey
    debug1: Offering RSA public key: /home/jcmvbkbc/.ssh/id_rsa
    debug1: Server accepts key: pkalg ssh-rsa blen 277
    debug1: Authentication succeeded (publickey).
    Authenticated to 127.0.0.1 ([127.0.0.1]:2222).
    debug1: channel 0: new [client-session]
    debug1: Entering interactive session.
    debug1: Sending environment.
    debug1: Sending env LANG = C.UTF-8
    debug1: Sending command: cd / ; ls -la
    total 172
    drwxr-xr-x   26 root     root      4096 Sep 29  2014 .
    drwxr-xr-x   26 root     root      4096 Sep 29  2014 ..
    drwxr-xr-x.   2 root     root      4096 Sep 14 11:18 bin
    drwxr-xr-x.   3 root     root      4096 Oct  1 01:11 boot
    drwxr-xr-x    3 root     root      4096 Nov 24  2015 cad
    drwxr-xr-x   20 root     root      3720 Nov 14 09:26 dev
    drwxr-xr-x. 151 root     root     12288 Nov 14 10:54 etc
    drwxr-xr-x.  11 root     root      4096 Aug 26  2016 home
    lrwxrwxrwx.   1 root     root        31 Nov  9  2015 initrd.img -> /boot/initrd.img-3.16.0-4-amd64
    drwxr-xr-x.  18 root     root      4096 Jun 24 19:19 lib
    drwxr-xr-x    2 root     root      4096 Jun 24 19:19 lib32
    drwxr-xr-x.   2 root     root      4096 Jun 24 19:19 lib64
    drwxr-xr-x    2 root     root      4096 Jun 24 19:19 libx32
    drwx------    2 root     root     16384 Nov 22  2015 lost+found
    drwxr-xr-x.   4 root     root      4096 Jan  9  2016 media
    drwxr-xr-x.   2 root     root      4096 Nov  9  2015 mnt
    drwxr-xr-x.   9 root     root      4096 Jul  7 10:10 opt
    dr-xr-xr-x  526 root     root         0 Sep  8 22:40 proc
    drwx------.  14 root     root      4096 Nov 14 10:56 root
    drwxr-xr-x   36 root     root      1180 Nov 14 10:57 run
    drwxr-xr-x.   2 root     root     12288 Oct 17 02:12 sbin
    drwxr-xr-x.   3 root     root      4096 Aug 26  2016 srv
    dr-xr-xr-x   13 root     root         0 Nov 14 10:58 sys
    drwxrwxr-x.  15 jcmvbkbc jcmvbkbc  4096 Jul 26 22:59 tftpboot
    drwxrwxrwt   47 root     root     57344 Nov 14 10:55 tmp
    drwxr-xr-x.  17 root     root      4096 Jan 31  2017 usr
    drwxr-xr-x.  11 root     root      4096 Sep 29  2014 var
    lrwxrwxrwx.   1 root     root        27 Nov  9  2015 vmlinuz -> boot/vmlinuz-3.16.0-4-amd64
    debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
    debug1: channel 0: free: client-session, nchannels 1
    Transferred: sent 3296, received 3456 bytes, in 0.0 seconds
    Bytes per second: sent 391117.1, received 410103.4
    debug1: Exit status 0


    Что вам говорит?
  • Как создать хэш таблицу с помощью си?

    jcmvbkbc
    @jcmvbkbc
    Хорошо, у меня всего 140к слов в словаре, а если у меня, например, на 2 гигабайта словарь? Тоже самое?

    Если мы говорим о скорости освобождения памяти в твоей простой реализации, то очевидно же, что да, линейная сложность, каждую структуру освобождать индивидуально. Если мы говорим о том, стоит ли использовать такую простую реализацию с большим словарём, то вероятно нет.
    Ну и аллокация/освобождение памяти -- это вообще отдельный большой вопрос, и в зависимости от сценария использования есть разные варианты оптимизации. Например если известно, что вся таблица освобождается целиком, то имеет смысл выделять для неё память из отдельной арены, которую потом и освобождать одним действием.
  • Как создать хэш таблицу с помощью си?

    jcmvbkbc
    @jcmvbkbc
    Обращаться к каждому элементу хэш таблицы с помощью "free" ?
    Или есть более изящный способ?

    free, здесь без вариантов. И если в node указатель, а не массив, то его тоже free.
  • Как создать хэш таблицу с помощью си?

    jcmvbkbc
    @jcmvbkbc
    Работать будет быстрее, чем хэш-таблица.

    Давно ли O(log n) стало быстрее O(1)?
  • Как создать хэш таблицу с помощью си?

    jcmvbkbc
    @jcmvbkbc
    Я думал, что когда мы объявляем массив указателей, то он заполнится мусорными значениями, и в таком случае мой список не будет иметь конца.

    Если заменить "объявляем" на "определяем", то ответ зависит от того где определяем. Если в функции -- то да, массив на стеке, без инициализации там будет мусор. Если вне функции -- то нет, массив в bss, без инициализации будет заполнен нулями.

    Получается, что если мы объявляем массив как глобальную переменную - то он всегда автоматически инициализируется нулями?

    Определяем. Да.
    У тебя ведь не со структурами сложности, а с языком?
  • Как создать хэш таблицу с помощью си?

    jcmvbkbc
    @jcmvbkbc
    Кстати при таком варианте, компилятор выдает следующую ошибку:

    romajke, да, слушай, я затупил, время позднее. В моём варианте должно быть так:
    typedef struct node
        {
            char word1[SIZE];
            struct node *next;
        } node;


    Ну либо с указателем в структуре, но тогда так:
    node * new = malloc (sizeof (node));
    //новый элемент структуры в поле next получает адрес текущей головы списка
    new->next=hashtable[k];
    //копируем в информационное поле нашей структуры считанное слово
    new->word1 = strdup(word);
    //делаем головой списка наш новый элемент
    hashtable[k] = new;
  • Как создать хэш таблицу с помощью си?

    jcmvbkbc
    @jcmvbkbc
    правильно я всё понял?

    Похоже на то.

    Если я все правильно понял, то в данном варианте, все таки стоит инициализировать массив указателей как NULL...

    Они и так инициализируются в NULL, потому что это глобальный массив.

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

    Чтобы не вставить несколько раз одно и то же слово? -- Да. Для чего-то ещё? -- Нет.
    Для чего по-твоему нужно сделать проверку?
  • Как создать хэш таблицу с помощью си?

    jcmvbkbc
    @jcmvbkbc
    Правильно ли я понимаю, что в эти строки нужно внести следующие изменения?

    romajke, не, неправильно. Ну т.е. синтаксис, конечно, станет правильным, но семантика -- нет.
  • Как создать хэш таблицу с помощью си?

    jcmvbkbc
    @jcmvbkbc
    Вообще, странный код. Зачем ты себе удвоил объём работы поместив node в hashtable? Лучше было сделать node *hashtable[26];, тогда всё могло бы быть примерно так:

    //максимальная длина слова в словаре
    #define SIZE 45
    
    int hash_function (char* key);
    
    //определяем структуру
    typedef struct node
        {
            char *word1;
            struct node *next;
        } node;
    
    
    //создаем хэш-таблицу, в которой будут хранится списки
    node *hashtable[26];
    
    
    int main()
    {   
        char *text = "small";
        FILE *fp = fopen(text, "r");
        if (fp == NULL)
        {   
            printf("Could not open %s.\n", text);
            return 1;
        }
        
        char word[SIZE];
        
        while(!feof(fp))
        {   
            //считываем слово из словаря
            fscanf(fp,"%s",word);
            
            //определяем его место в массиве
            int k=hash_function(word);
            
            //добавляем слово
            node * new = malloc (sizeof (node));
            new->next=hashtable[k];
            strcpy(new->word1, word);
            hashtable[k] = new;
        }
    
        
        fclose(fp);
        
        return 0;
    }
    
    int hash_function (char* key)
    { 
      int hash = tolower (key [0]) - 'a';
      return hash;
    }
  • Как создать хэш таблицу с помощью си?

    jcmvbkbc
    @jcmvbkbc
    new-> next = hashtable[k];
                hashtable[k] = new;

    Скажи, ты это компилировал? new->next -- это node*, а hashtable[k] -- это node.
  • Как заставить iconv работать?

    jcmvbkbc
    @jcmvbkbc
    Из cp866 всегда можно перевести в utf8. В вашем коде ещё одна проблема: аргументы iconv_open -- это "в какую кодировку" и "из какой кодировки", а у вас наоборот. Должно быть iconv_t foo = iconv_open("UTF-8", "CP866");
  • Как заставить iconv работать?

    jcmvbkbc
    @jcmvbkbc
    не конвертирует он

    что iconv возвращает?
  • Как заставить iconv работать?

    jcmvbkbc
    @jcmvbkbc
    все равно вывод совершенно не то, что нужно.

    А именно?
  • C++ как сравнить строки и посчитать процент похожести строк?

    jcmvbkbc
    @jcmvbkbc
    упрощенно задание следующее

    делай сам, не благодари.
  • Можно ли писать директивы внутри main на c++?

    jcmvbkbc
    @jcmvbkbc
    Шерзод Мамадалиев, в выражении #if (n < 3) n не является определённым символом препроцессора, поэтому препроцессор заменяет его на 0. 0 < 3 -- истина, блок кода компилируется.
    Замена неопределённого символа препроцессора на 0 происходит только в директивах #if и #elif и нигде больше.