Вопросы по циклу "Сказки дядюшки Римуса"

Тема в разделе "WASM.BEGINNERS", создана пользователем DOSAsm386, 12 янв 2017.

  1. DOSAsm386

    DOSAsm386 Member

    Публикаций:
    0
    Регистрация:
    12 янв 2017
    Сообщения:
    64
    Адрес:
    Россия
    В первой главе Сказок дядюшки Римуса натолкнулся на проблему с установкой WinSDK (WinDDK не счел нужным устанавливать). Скачал образ для 64 битных систем (у меня Windows 7 Максимальная 64 бит), но при установке инсталлятор пожаловался на установленный у меня фреймворк 4.6.1. Пришлось фреймворк 4.6.1 снести и установить фреймворк 4.0. Тогда инсталлятор уже не ругался, а все благополучно установил. Ставить обратно фреймворк 4.6 я не стал, вроде и с 4.0 все работает. Но фреймворк 4.6 пришел в обновлениях к винде, пришлось его скрыть в "Центре обновления Windows". Проблема вроде бы решена. Остается правда вопрос ставить или нет обратно фреймворк 4.6. Кто-нибудь сталкивался с такой проблемой?
     
  2. [ixTor]

    [ixTor] Member

    Публикаций:
    0
    Регистрация:
    5 янв 2017
    Сообщения:
    53
    протести все тоже самое на виртуалке, если поставишь все без 4.6 фраемра а потом его накатишь и все будет работать то все зашибись ставь обновление,если нет то неставь...виртуалка золото
     
  3. DOSAsm386

    DOSAsm386 Member

    Публикаций:
    0
    Регистрация:
    12 янв 2017
    Сообщения:
    64
    Адрес:
    Россия
    ixTor
    конечно,не спорю - виртуалка золото, но слишком проблемно и долго всю эту кучу (ось, обновления к ней ставить,включая фреймворк, потом SDK). Короче решил оставить фреймворк 4.0, а если что-нибудь потребует 4.6 , то установлю его,а там посмотрим, что как работать будет. Спасибо за совет :)
     
  4. _edge

    _edge Well-Known Member

    Публикаций:
    1
    Регистрация:
    29 окт 2004
    Сообщения:
    631
    Адрес:
    Russia
    Наверное имеет смысл сделать репозиторий виртуалок. Оно конечно пиратское варезное, в смысле та ОС и софт к ней, что в виртуалки ставится, но тем не менее. Специфика разработки и отладки системного ПО требует применения VM. Так что вопрос к участникам. У меня уже есть залитый на ya.disk winXPhomeSP3 для VMware, с определенным софтом, 4.5 архива по 700мб.

    4 версия .NET на ХР насколько знаю работать не будет.
     
  5. DOSAsm386

    DOSAsm386 Member

    Публикаций:
    0
    Регистрация:
    12 янв 2017
    Сообщения:
    64
    Адрес:
    Россия
    _edge
    Да с виртуалками проблем нет, VirtualBox ничего,а оси можно скачать с торрентов. Так что в репозитории наверно смысла нет. Все в инете можно найти. А фреймворк 4.0 устанавливается и на ХР. Да и данная WinSDK под XP должна устанавливаться.

    Mikl___
    Да,наверное стоит.
    Но вопросов к первой главе у меня много, опишу их в следующем посту.
     
  6. DOSAsm386

    DOSAsm386 Member

    Публикаций:
    0
    Регистрация:
    12 янв 2017
    Сообщения:
    64
    Адрес:
    Россия
    Ok
    1) немного непонятно наполнение папки c:\masm64\bin
    cvtres.exe, ml64.exe, link.exe (требует для запуска mspdb100.dll !),
    mspdb100.dll, msobj100.dll взял из c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64\
    Эти файлы по ходу не нужны:
    msobj80.dll
    mspdb80.dll
    Эти не знаю откуда брать :dntknw:
    msvcp80.dll
    msvcp90.dll
    msvcr80.dll
    msvcr90.dll
    rc.exe
    rcdll.dll
    Но! С тем,что нашел программа откомпилировалась. Правда есть две ошибки в листинге, пустяшные, но все же: в двух местах вместо двоеточия должна быть точка с запятой, короче описка)
    Код (ASM):
    1. .data                : данные (здеся)
    2. MsgCaption      db "Win64 Iczelion's lesson #2: MessageBox",0
    3. MsgBoxText      db "Win64 Assembly is Great!",0
    4. .code                : код программы (и здесь)
    2) Братец Кролик создает ассоциации ассемблерных файлов с файлом asm.bat
    Не указан листинг правильного bat файла для данной цели,а он должен быть следующий:
    Код (DOS):
    1. cls
    2. set masm64_path=d:\masm64
    3. set filename=%~n1
    4. %masm64_path%\bin\ml64 /c %filename%.asm
    5. %masm64_path%\bin\link /SUBSYSTEM:WINDOWS ^
    6. /entry:WinMain %filename%.obj
    7. del %filename%.obj
    3) Не указана операционная система,под которую предлагается щелкать по значку "Мой компьютер", у меня Windows 7 и там совсем по другому ассоциировать файлы. Но! редактирование реестра конечно сработает у всех) (я правда предпочел таскать bat файл из папки в папку)
    4)Под конец - не та картинка работающего приложения,должна быть следующая:
    Right_Picture.jpg
    Не посчитайте меня занудой, но главу надо подправить, а так туториал класс! Буду переходить ко второй главе.
     
    _edge нравится это.
  7. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.874
    Там два варианта было по поводу двоеточия и точки с запятой -- не мог я перепутать комментарий с меткой, там точка с запятой
    cvtres.exe, rc.exe, rcdll.dll -- понадобятся при создании файлов с ресурсами
    у меня Win 7 Pro service pack 1
    картинки именно такие
    Во вложении содержимое папки bin
     

    Вложения:

    • bin2.zip
      Размер файла:
      711,8 КБ
      Просмотров:
      270
    • bin1.zip
      Размер файла:
      736,9 КБ
      Просмотров:
      268
    • bin3.zip
      Размер файла:
      365 КБ
      Просмотров:
      296
    Последнее редактирование: 13 янв 2017
  8. DOSAsm386

    DOSAsm386 Member

    Публикаций:
    0
    Регистрация:
    12 янв 2017
    Сообщения:
    64
    Адрес:
    Россия
    Wrong_Picture.jpg
    [​IMG]
     

    Вложения:

    • 02.png
      02.png
      Размер файла:
      21,3 КБ
      Просмотров:
      8.620
    Последнее редактирование модератором: 13 янв 2017
  9. DOSAsm386

    DOSAsm386 Member

    Публикаций:
    0
    Регистрация:
    12 янв 2017
    Сообщения:
    64
    Адрес:
    Россия
    Щелкаю по ярлыку "Компьютер" на рабочем столе:
    Windows 7 Максимальная SP1, "Сервиса" у меня нет среди пунктов меню.
    MyComp.jpg
     
  10. DOSAsm386

    DOSAsm386 Member

    Публикаций:
    0
    Регистрация:
    12 янв 2017
    Сообщения:
    64
    Адрес:
    Россия
  11. DOSAsm386

    DOSAsm386 Member

    Публикаций:
    0
    Регистрация:
    12 янв 2017
    Сообщения:
    64
    Адрес:
    Россия
    :i-m_so_happy:
    А я тогда установлю WDK)
     
    Mikl___ нравится это.
  12. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.557
    Адрес:
    Russia
    Посмотрел - действительно там стоят двоеточие. В том числе и во второй главе так же есть проблема.
     
    Mikl___ нравится это.
  13. SadKo

    SadKo Владимир Садовников

    Публикаций:
    8
    Регистрация:
    4 июн 2007
    Сообщения:
    1.610
    Адрес:
    г. Санкт-Петербург
    Это, наверное, чтобы обучающиеся не расслабляли булки и включали мозг :).
     
    DOSAsm386, Alexey, Mikl___ и 2 другим нравится это.
  14. Alexey

    Alexey Инициативный

    Публикаций:
    1
    Регистрация:
    28 сен 2002
    Сообщения:
    271
    Судя по всему вопрос решен, но факты
    1) .net 4.0 совместим с ХР
    2) пиратить необязательно, вполне годно пользоваться офиц. виртуальными образами https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/#downloads (мой выбор Win 7+IE11 edition)
     
    _edge нравится это.
  15. _edge

    _edge Well-Known Member

    Публикаций:
    1
    Регистрация:
    29 окт 2004
    Сообщения:
    631
    Адрес:
    Russia
    Не совсем понял легальность такого. Ведь мы можем преобразовать образ в обычный img, и записать на hdd, получится ОСь.

    Прикольно в http://modernievirt.blob.core.windows.net/vhd/release_notes_license_terms_1_5_15.pdf

    1. INSTALLATION AND USE RIGHTS.

    a. You may install and use the software on one computer for use by one person at a time. This computer is the "licensed computer." A computer is a physical hardware system with an internal storage device capable of running the software. A hardware partition or blade is considered to be a separate computer.
    b. You may use the software for testing purposes only. You may not use the software for commercial purposes. You may not use the software in a live operating environment.
    c. The software is licensed as a single piece of software. You may not separate its component parts. You may only use the software on one licensed computer and one operating system environment.

    2. TIME---SENSITIVE SOFTWARE. You may use the software for 90 days after it is downloaded to the licensed computer. The software will stop running after 90 days and you may not receive any other notice. You may not be able to access data used with the software when it stops running.

    3. NO ACTIVATION. To prevent its unlicensed use, the software contains activation enforcement technology. Because the software is licensed for testing use only, you are not licensed to activate the software for any purpose even if it prompts you to do so.
     
    Последнее редактирование: 15 янв 2017
  16. DOSAsm386

    DOSAsm386 Member

    Публикаций:
    0
    Регистрация:
    12 янв 2017
    Сообщения:
    64
    Адрес:
    Россия
    Установил я WinDDK и понял, что файлы из первой главы полностью взяты из WinDDK. Что касается 64 битного link.exe, то он есть только в WinSDK в папке c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64\
    При этом для работы link.exe требует 64 битную библиотеку mspdb100.dll из той же папки.
    В WinDDK есть какой-то странный 64 битный link.exe из папки c:\WinDDK\7600.16385.1\bin\amd64\OACR\bin\,
    но он при запуске выдает следующее:
    --------------------------------------------------------
    Microsoft (R) Auto Code Review Version 3.0.30122.1 (x64 Edition)
    Copyright (C) Microsoft Corporation. All rights reserved.
    OACR Linker Interceptor
    Usage: link <command>
    Calls regular build tool (link.exe) and does OACR processing.
    See 'oacr help' for more information on OACR.
    -----------------------------------------------------------
    Версии ml64.exe, link.exe в WinDDK и WinSDK различаются: cоответственно 9-я (WinDDK) и 10-я (WinSDK). Т.е. ассемблер в WinSDK посвежее.
    Mikl___
    Все таки в главе про ассоциирование ассемблерных файлов следует добавить измененный BAT файл, в котором строка
    set filename=tut_02
    заменена на строку:
    set filename=%~n1
    которая получает имя файла без расширения из полученного параметра (полного имени файла).
    Иначе мы щелкаем по любому файлу с расширением asm и получаем в итоге ассемблирование и линковку файла tut_02.asm, ладно пускай мы каждый раз будем менять параметр filename на нужное имя, но тогда весь смысл автоматизации процесса ассемблирования посредством файловых ассоциаций пропадает, пропадает и смысл передачи параметра файлу asm.bat.
    По нему кликать мышкой можно и без всяких файловых ассоциаций.
    -------------------------------
    Очень понравился в первой главе модифицированный asm.bat с возможностью вывода ошибок в файл error.txt
     
  17. DOSAsm386

    DOSAsm386 Member

    Публикаций:
    0
    Регистрация:
    12 янв 2017
    Сообщения:
    64
    Адрес:
    Россия
    Глава первая:
    Зачем sub rsp,28h перед invoke?
    Глава вторая, шаг второй,объединение сегментов:
    После изменения кода (осталась одна секция) все откомпилировалось и запустилось даже без опции линкера /SECTION:.text,W
    Нормально ли это? С опцией /SECTION:.text,W все тоже работает.
    Почему в листинге программы используется название секции .code, а в опции линкера - .text ?
     
  18. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.874
    DOSAsm386,
    привет, во втором уроке с запуском MessageBox и ExitProcess как таковой записи в секцию кода нет, но она будет в третьем и далее уроках, но вот при объединении секций данных и кода размер ехе-файла должен уменьшится. Про sub rsp,28h перед invoke во втором уроке объяснено, внимательно читай :)
     
    Последнее редактирование: 5 фев 2017
    DOSAsm386 нравится это.
  19. DOSAsm386

    DOSAsm386 Member

    Публикаций:
    0
    Регистрация:
    12 янв 2017
    Сообщения:
    64
    Адрес:
    Россия
    Почему в листинге программы используется название секции .code, а в опции линкера - .text ?
     
  20. SadKo

    SadKo Владимир Садовников

    Публикаций:
    8
    Регистрация:
    4 июн 2007
    Сообщения:
    1.610
    Адрес:
    г. Санкт-Петербург
    Насколько помню, .code - это не название секции, а директива, после которой идёт секция кода. А вот название секции кода по умолчанию, как раз, .text.
     
    Mikl___ и DOSAsm386 нравится это.