Форум программистов, компьютерный форум, киберфорум
ОС на Assembler
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
14 / 14 / 8
Регистрация: 26.09.2007
Сообщений: 919

Пробую написать загрузчик для IO.SYS

06.06.2023, 00:45. Показов 2631. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нашел исходный код MSDOS, пробую написать загрузчик для IO.SYS. В исходном коде IO.SYS загружается в сегмент

Assembler
1
2
3
4
5
6
7
8
SEGBIOS SEGMENT AT BIO_SEG
 
    ; Define the destination segment of the BIOS, including the
    ; initialization label
 
BIOS    LABEL   BYTE
 
SEGBIOS ENDS
на метку BIOS. Причем биос загружается по смещению BIO_OFFSET

Assembler
1
2
BIO_SEG     EQU 70H     ; Destingation segment of BIOS
BIO_OFFSET  EQU 700H        ; Offset of bios
Этот загрузчик написан на MASM я пишу на NASM как вычислить абсолютный адрес куда этот загрузчик ложит загруженный IO.SYS? Если

Assembler
1
ORIGIN      EQU 7C00H       ; Origin of bootstrap LOADER
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.06.2023, 00:45
Ответы с готовыми решениями:

nvlddmkm.sys, dxgkrnl.sys, dxgmms1.sys, ntoskrnl.exe, watchdog.sys
Здравствуйте! У меня такая проблема компьютер стоит 3 года в последние дни 19 июля оставил игру включенную и отошел на 5 минут пришел игра...

Как заменить загрузчик Windows Boot Manager на загрузчик Grub 2 FileManager или загрузчик Grub4Dos ?
С чего-бы начать...я уже заменил WBM на Grub 2 FM,т.е. поменял сам загрузчик...на всех разделах,кроме одного...который на 16мб и без...

Подскажите, как написать загрузчик для запакованного архива mods.pkg ?
Нужен Загрузчик для запакованного архива mods.pkg При запуске игры загрузчик должен подхватить моды упакованный архив будет запаролен ...

23
Эксперт Hardware
Эксперт Hardware
 Аватар для R71MT
6180 / 2416 / 400
Регистрация: 29.07.2014
Сообщений: 3,151
Записей в блоге: 4
06.06.2023, 08:02
Цитата Сообщение от kurlyak Посмотреть сообщение
как вычислить абсолютный адрес куда этот загрузчик ложит загруженный IO.SYS?
Никак, поскольку никакой информации об этом в представленных вами данных попросту нет.
И зачем вам вообще вычислять абсолютный (физический, линейный) адрес? Здесь должен фигурировать только сегментный, т.к. переход в защищённый режим ЦП с плоской моделью памяти отсутствует. Но если сильно нужно, то формула получения физ.адреса из сегментного такая:
PhyAddr = (Seg * 10h) + Offset
2
14 / 14 / 8
Регистрация: 26.09.2007
Сообщений: 919
06.06.2023, 09:04  [ТС]
Да, мне нужен адрес в формате XXXX:XXXX, т.е. эта строка из MASM

Assembler
1
SEGBIOS SEGMENT AT BIO_SEG
где начинается SEGBIOS и где оффсет для биос файла? BIO_SEG это значение относительно начала кода тоесть cs или это относительно начала всей памяти компьютера? Получается такой адрес что за загрузить и прыгнуть на биос

Assembler
1
jmp 70h:700h
1
Модератор
2131 / 1000 / 170
Регистрация: 23.07.2018
Сообщений: 3,349
Записей в блоге: 3
06.06.2023, 11:15
В оригинале, скорее всего, было что-то вроде
Assembler
1
jmp far ptr segbios: bios
Но Вам нужно ещё кое-что разузнать о данной версии IO.SYS

Откуда программа инициализации IO.SYS узнает, с какого устройства читать MSDOS.SYS и всё остальное?
2
14 / 14 / 8
Регистрация: 26.09.2007
Сообщений: 919
06.06.2023, 12:20  [ТС]
Смотрю последние строчки исходного кода boot sector MSDOS

Assembler
1
2
3
4
5
6
DISKOK:
    mov CH,MediaByte
    mov DL,BootDrv
    mov BX,[BiosLow]        ; J.K.I1.Get bios sector in bx
    mov AX,[BiosHigh]       ; J.K.I1.
    jmp FAR PTR Bios        ;CRANK UP THE DOS
И смотрю boot sector в дизасемблере IDA

Assembler
1
2
3
4
5
 mov     ch, ds:7C15h
seg000:0142                 mov     dl, ds:7C24h
seg000:0146                 mov     bx, ds:7C49h
seg000:014A                 mov     ax, ds:7C4Bh
seg000:014D                 jmp     far ptr 70h:0
Я в своем коде использую такие значения (использую NASM)

Assembler
1
2
3
4
5
6
7
8
end:                    ; We've got the file to load!
    pop ax              ; Clean up the stack (AX was pushed earlier)
    mov dl, byte [bootdev]      ; Provide kernel with boot device info
    mov ch, byte [MediumByte]
    mov bx, 21h         ;start of user data of disk 33 decimal
    mov ax, 0
 
    jmp 70h:0000h           ; Jump to entry point
Далее смотрю исх.код boot sector MSDOS и тоже в дизасемблированном коде

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
        ; We now begin to load the BIOS in.
        ; All we have to do is just read is multiply the BioStartClus
        ; by SecsPerClust to find the logical sector for the start
        ; of the BIOS file. When this value is added to the double
        ; word BiosHigh:BiosLow we get the absolute sector offset
        ; for the start of the file and then read the  sectors
        ; contiguously IBM_LOAD_SIZE times. We here assume that
        ; IBMLOAD module is contiguous. Currently we estimate that
        ; IBMLOAD module will not be more than 3 sectors.
DoLoad:
    mov AX,[BX].DIR_FIRST   ; AX = BIOS starting cluster
    dec AX          ; Subtract first 2 reserved clusters
    dec AX
    mov BL,SecsPerClust     ; BX = Sectors per cluster
    xor BH,BH
    mul BX          ; DX:AX = first logical sector of bios
 
    add AX,[BiosLow]        ; Add absolute start sector
    adc DX,[BiosHigh]       ; DX:AX = Absolute bios sector offset
 
    mov BX,BIO_OFFSET       ;offset of ibmbio(IBMLOAD) to be loaded.
    mov CX,IBM_LOAD_SIZE    ;# of sectors to read.
IO.SYS грузится по смещению BIO_OFFSET т.е. 700h но ES регистр не указан в коде. Не понятно, ES регистр в коде не указан, смещение 700h и сюда грузится IO.SYS а потом нелогично делается jmp far ptr 70h:0 если это должно быть jmp far ptr 70h:700h - Почему так?
0
Модератор
2131 / 1000 / 170
Регистрация: 23.07.2018
Сообщений: 3,349
Записей в блоге: 3
06.06.2023, 12:55
Можете почитать ещё главу Энциклопедии MS-DOS
https://www.pcjs.org/documents... /section2/ о загрузке и инициализации компонентов этой системы.

(Поиском Getting MS-DOS up to перейдёте к пункту Loading MS-DOS

Добавлено через 3 минуты
Цитата Сообщение от kurlyak Посмотреть сообщение
ES регистр в коде не указан, смещение 700h и сюда грузится IO.SYS а потом нелогично делается jmp far ptr 70h:0 если это должно быть jmp far ptr 70h:700h - Почему так?
А что было в ES, когда загрузчик ROM BIOS считал и передал управление загрузочной записи?
7016 должно попасть в CS.
2
Эксперт Hardware
Эксперт Hardware
 Аватар для R71MT
6180 / 2416 / 400
Регистрация: 29.07.2014
Сообщений: 3,151
Записей в блоге: 4
06.06.2023, 12:58
kurlyak, загрузись под чистым досом,
и просмотри состояние памяти командой mem/d
Миниатюры
Пробую написать загрузчик для IO.SYS  
2
14 / 14 / 8
Регистрация: 26.09.2007
Сообщений: 919
06.06.2023, 15:05  [ТС]
Все таки мне не понятно IO.SYS грузиться по адресу 70h:700h или грузиться по адресу 70h:0000h?

Цитата Сообщение от politoto Посмотреть сообщение
7016 должно попасть в CS.
Так в CS же 07C0h это место куда биос компьютера ложит код, почему у вас написано 70h?

Добавлено через 1 час 2 минуты
Как на NASM сделать прыжок по адресу

Assembler
1
jmp     far ptr 70h:0
Добавлено через 21 минуту
там же в начале памяти расположена системная информация, почему прыжок делается на 70h?
0
Модератор
2131 / 1000 / 170
Регистрация: 23.07.2018
Сообщений: 3,349
Записей в блоге: 3
06.06.2023, 16:03
kurlyak, пока машина в режиме совмеcтимости с 8086, 7016:0 и 0:70016 суть логические адреса начала одной и той же области памяти.

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
>> e 70:0 'abcdef'
changing &0070:0000 from 0x00 to 0x61
changing &0070:0001 from 0x00 to 0x62
changing &0070:0002 from 0x00 to 0x63
changing &0070:0003 from 0x00 to 0x64
changing &0070:0004 from 0x00 to 0x65
changing &0070:0005 from 0x00 to 0x66
>> d 70:0
&0070:0000  61 62 63 64 65 66 00 00-00 00 00 00 00 00 00 00  abcdef..........
&0070:0010  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
&0070:0020  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
 
>> d 0 : 700
>> d 0:700
&0000:0700  61 62 63 64 65 66 00 00-00 00 00 00 00 00 00 00  abcdef..........
&0000:0710  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
&0000:0720  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
Ваша версия IO.SYS, судя по всему, расчитана на то, что содержимое IO.SYS располагается в этой области.
А выполнение программы инициализации IO.SYS начинается при CS=7016 и IP=0
1
14 / 14 / 8
Регистрация: 26.09.2007
Сообщений: 919
06.06.2023, 17:04  [ТС]
А еще вопрос, почему у меня в исх.коде MSDOS место куда биос компьютера ложит загрузчик такое

Assembler
1
ORIGIN      EQU 7C00H       ; Origin of bootstrap LOADER
А у меня есть другой код загрузчика (уже моего) в нем код

Assembler
1
2
    mov ax, 07C0h           ; Set data segment to where we're loaded
    mov ds, ax
То есть тоже получается 07c0h это тот же адрес что и 7c00h? или как?
0
Эксперт Hardware
Эксперт Hardware
 Аватар для R71MT
6180 / 2416 / 400
Регистрация: 29.07.2014
Сообщений: 3,151
Записей в блоге: 4
06.06.2023, 17:10
Цитата Сообщение от kurlyak Посмотреть сообщение
Так в CS же 07C0h это место куда биос компьютера ложит код, почему у вас написано 70h?
Вам нужно теорию подтянуть, а потом переходить к практике.
Если коротко, то после сброса "Reset", регистры CS:IP аппаратно получают значения F000:FFF0. Чипсеты для x86 в сегмент F000h проецируют содержимое ROM-BIOS так, что по адресу F000:FFF0 магическим образом оказывается инструкция JMP FAR, которая отправляет ЦП на исполнение процедуры POST, и заполнение структур биоса в памяти (IVT, BDA, и прочие). Если запросить у отладчика данный адрес, можно увидеть код перехода, и далее, что там лежит:
Code
1
2
3
4
5
6
7
8
9
10
11
C:\ debug
-d f000:fff0
F000:FFF0  EA 5B E0 00 F0 30 36 2F - 32 33 2F 39 39 00 FC 45   .[...06/23/99..E
 
-u f000:fff0
F000:FFF0  EA5BE000F0    JMP  F000:E05B   <--- прыжок на POST 
F000:FFF5  30362F32      XOR  [322F],DH
F000:FFF9  332F          XOR  BP,[BX]
F000:FFFB  3939          CMP  [BX+DI],DI
F000:FFFD  00FC          ADD  AH,BH
F000:FFFF  45            INC  BP
Когда биос отработает свою инициализацию, он передаёт управление по адресу 0000:7C00, в надежде обнаружить там уже загрузчик ОС. Таким образом, по данному адресу нет никакого кода биос, а регистры CS:IP на этот момент имеют значения 0000:7C00. Вот пример загрузчика оси на FASM, синтаксис которого почти не отличается от NASM:

Кликните здесь для просмотра всего текста
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
use16
org 7C00h
jmp start
 
mess0   db  ' READ BOOT-SECTOR: OK!',13,10
        db  '  L - load OS',13,10,'  R - reboot'
mess1   db  ' Loading "DEMO-OS v0.1"....'
error   db  ' ERROR!'
 
start:
; сегментные регистры в нуль, и устанавливаем стэк
   cli
   xor    ax,ax
   mov    ds,ax
   mov    es,ax
   mov    ss,ax
   mov    sp,600h      ; стэк нужен для CALL/RET
   sti
 
; ставим режим 80х25 и убираем курсор
   mov    ax,3
   int    10h
   mov    ah,1
   mov    ch,20h
   int    10h
 
; выводим мессагу, что мы по-адресу 0:7C00h
   mov    bp,mess0
   xor    dx,dx
   mov    cx,51
   call  printStr
 
; ждём дальнейших указаний..
@@:
   xor    ax,ax
   int    16h
   cmp    al,'L'
   je      @loading
   cmp    al,'R'
   je      @reboot
   jmp    @b
 
; переходим к загрузки ОС из сектора(2) флопа..
@loading:
   mov    bp,mess1    ; мессага
   mov    dx,1419h    ; позиция текста в окне
   mov    cx,27       ; длина строки
   call  printStr    ;
 
   mov    bp,3         ; счётчик попыток чтения сектора
   mov    al,1         ; считать 1 сектор,
   mov    bx,7E00h    ;    ..на адрес 7Е00h
   mov    cx,2         ; номер сектора для чтения
   xor    dx,dx       ; головка/диск = нуль
@@:
   mov    ah,2         ; считать сектор!
   int    13h           ;
   jnc    @ok           ; ОК, если нет ошибки
   dec    bp             ; иначе: уменьшаем счётчик попыток
   jz      @error      ; три попытки - ERROR!
   xor    ah,ah       ; иначе: сброс контролёра флопа
   int    13h           ;
   jmp    @b             ; сл.попытка..
 
; считали ОС! передаём ей управление!
@ok:
   jmp    7E00h
 
; мессага обработчика ошибки и ребут
@error:
   mov    bp,error
   mov    dx,1523h
   mov    cx,7
   call  printStr
   xor    ax,ax
   int    16h
@reboot:
   int    19h
 
;=========== функция вывода сообщений ======================
printStr:
   mov    ax,1
   mov    bx,0Fh
   mov    ah,13h
   int    10h
ret
 
;=== Дополняем до конца сектора нулями ======
times   510 - ($ - $$) db 0   ; забить хвост нулями
        dw    0AA55h          ; бут-сигнатура

Цитата Сообщение от kurlyak Посмотреть сообщение
Как на NASM сделать прыжок по адресу "jmp far ptr 70h:0"
Assembler
1
2
3
push  70h
push  0
retf
2
14 / 14 / 8
Регистрация: 26.09.2007
Сообщений: 919
06.06.2023, 17:29  [ТС]
Цитата Сообщение от politoto Посмотреть сообщение
Ваша версия IO.SYS, судя по всему, расчитана на то, что содержимое IO.SYS располагается в этой области.
В смысле в какой области, можно уточнить? Области 07c0h:700h или области 0:700h?
0
Модератор
2131 / 1000 / 170
Регистрация: 23.07.2018
Сообщений: 3,349
Записей в блоге: 3
06.06.2023, 17:35
Цитата Сообщение от R71MT
нужно теорию подтянуть
Например перечитать параграф Сегментация памяти в конце этого поста
https://www.cyberforum.ru/post13450958.html
форумного Учебника.

Добавлено через 1 минуту
Цитата Сообщение от kurlyak Посмотреть сообщение
Области 07c0h:700h или области 0:700h?
70h:0, она же 0:700h
1
14 / 14 / 8
Регистрация: 26.09.2007
Сообщений: 919
06.06.2023, 17:48  [ТС]
Вы бы не могли мне точно указать, какие должны быть регистры ES:BX для загрузки IO.SYS в память и адрес куда делать jmp?

Добавлено через 10 минут
Я написал такой код:

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
xor ax,ax
mov es, ax
    
mov bx, 70h   ;адрес куда ложим IO.SYS
 
mov ah, 2           ; int 13h floppy read params
mov al, 1
 
push ax             ; Save in case we (or int calls) lose it
 
load_file_sector:
    mov ax, word [cluster]      ; Convert sector to logical
    add ax, 31
 
    call l2hts          ; Make appropriate params for int 13h
 
    xor ax, ax
    mov es, ax
    mov bx, word [pointer]
 
    pop ax              ; Save in case we (or int calls) lose it
    push ax
 
    stc
    int 13h
 
    jnc calculate_next_cluster  ; If there's no error...
 
 
 
;----------------------------------
 
 
end:                    ; We've got the file to load!
 
    pop ax              ; Clean up the stack (AX was pushed earlier)
 
    mov dl, byte [bootdev]      ; Provide kernel with boot device info
    mov ch, byte [MediumByte]
    mov bx, 21h         ;start of user data of disk 33 decimal
    mov ax, 0
 
    jmp 70h         ; Jump to entry point of loaded IO.SYS
 
;-----------------------------------------------
 
pointer     dw 70h  ; Pointer into Buffer, for loading IO.SYS
Что тут не праильно? Не грузиться ОС.
0
Модератор
2131 / 1000 / 170
Регистрация: 23.07.2018
Сообщений: 3,349
Записей в блоге: 3
06.06.2023, 18:43
Цитата Сообщение от kurlyak Посмотреть сообщение
куда делать jmp?
nasm y.asm -lconout$
Assembler
1
     1 00000000 EA00007000              jmp 112:0
0
14 / 14 / 8
Регистрация: 26.09.2007
Сообщений: 919
06.06.2023, 18:55  [ТС]
Так я же делаю jmp 70h это 112 в десятичной - не работает.
0
Модератор
2131 / 1000 / 170
Регистрация: 23.07.2018
Сообщений: 3,349
Записей в блоге: 3
06.06.2023, 19:40
Цитата Сообщение от kurlyak Посмотреть сообщение
я же делаю jmp 70h
Где? Здесь?
Цитата Сообщение от kurlyak Посмотреть сообщение
Assembler
43
jmp 70h ; Jump to entry point of loaded IO.SYS
Это разные инструкции.
Ср.:
nasm y.asm -lconout$
Assembler
1
2
     1 00000000 EA00007000              jmp 112:0
     2 00000005 E9(7000)                jmp 70h
PowerShell
1
Format-Hex y
EA 00 00 70 00 E9 68 00

jmp 112:0 делает
Python
1
2
CS = 112
IP = 0
jmp 70h увеличивает IP на число, содержащееся в инструкции.
Ассемблер и др. утилиты подбирают это число так, чтобы в итоге получилось 7016
0
14 / 14 / 8
Регистрация: 26.09.2007
Сообщений: 919
07.06.2023, 01:03  [ТС]
Есть в исходном коде MSDOS такое

Assembler
1
2
3
4
5
6
7
8
9
10
BIO_SEG     EQU 70H     ; Destingation segment of BIOS
 
SEGBIOS SEGMENT AT BIO_SEG
 
    ; Define the destination segment of the BIOS, including the
    ; initialization label
 
BIOS    LABEL   BYTE
 
SEGBIOS ENDS
Тут имеется ввиду сегмент начинается на 70h:0 или от начала кода программы 07с0h:70h?
0
14 / 14 / 8
Регистрация: 26.09.2007
Сообщений: 919
07.06.2023, 01:22  [ТС]
И вот такой код

Assembler
1
ASSUME  ES:CODE
значит что

Assembler
1
2
mov ax, 07c0h
mov es, ax
Или нет?
0
07.06.2023, 05:26
 Комментарий модератора 
msboot.txt:
Assembler
1
2
3
; *                      Microsoft Confidential
; *                      Copyright (C) Microsoft Corporation 1991
; *                      All Rights Reserved.
kurlyak, какие у Вас основания полагать, что Вы имеете право публиковать этот материал на Форуме?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.06.2023, 05:26
Помогаю со студенческими работами здесь

Пробую написать простой сервер на Linux. Не запускается
Пытаюсь учить сети под линукс. У меня Mint 17, Возможно запуск программы делаю неправильно. Всё компилируеся. Пытаюсь через консоль...

MSI GTX 970 4GD5T OC Nvlddmkm.sys, dxgkrnl.sys и dxgmms1.sys
Всем привет! Видеокарта MSI GTX 970 4GD5T OC. Windows 7 x64. В последнее время стала очень часто вылезать ошибка BSoD 116, комп уходит в...

Что такое драйвера atapi.sys , pciide.sys и pciidex.sys
При попытке прогуглить эти драйвера в основном выдаёт, что это драйвера для соединения винды и жёсткого диска, это понятно, но какую именно...

Железо или софт?, nvmp.sys, ndis.sys, ntfs.sys...
Такая проблема делали ремонт без пыли и грязи комп в другой комнате винда стояла пол года ниче нового не устанавливалось, однажды включив...

BSOD 0x116 dxgkrnl.sys + dxgmms1.sys + nvlddmkm.sys
Добрый день! Столкнулся сегодня с таким BSOD. Пока что было всего 2 раза,утром,вовремя старта ПК(примерно через 15-20 минут) И...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Разработка плагина для Minecraft
Javaican 09.06.2025
За годы существования Minecraft сформировалась сложная экосистема серверов. Оригинальный (ванильный) сервер не поддерживает плагины, поэтому сообщество разработало множество альтернатив. CraftBukkit. . .
Dapper - лучший среди микроORM под C#
UnmanagedCoder 09.06.2025
Знаете, в мире ORM-инструментов для . NET существует негласная иерархия. На вершине массивных фреймворков возвышается Entity Framework - неповоротливый, но всемогущий. А в категории легковесных. . .
Сравнение GCC 14 и Clang 18 компиляторов C для HPC
bytestream 08.06.2025
В высокопроизводительных вычислениях (HPC) выбор компилятора - это ход, способный радикально изменить производительность всей системы. Работая последние 15 лет с критическими HPC-системами, я видел. . .
Всё о конфигурации ASP.NET Core
stackOverflow 08.06.2025
Старый добрый web. config, похоже, отправился на пенсию вместе с классическим ASP. NET. За годы работы с различными проектами я убедился, что хорошо организованная конфигурация – это половина успеха. . .
dev-c++5.11 Продолжаю движение.
russiannick 08.06.2025
Казалось, день прошел впустую. Просмотрел кучу видео и только потом заметил заголовок - уроки си. Искусители сбивали новичка с пути с++. Так легко ошибиться когда вокруг столько яп содержащих в. . .
Квантовые алгоритмы и обработка строк в Q#
EggHead 07.06.2025
Квантовые вычисления перевернули наше представление о том, как работать с данными, а Q# стал одним из ключевых языков для разработки квантовых алгоритмов. В традиционых системах мы оперируем битами —. . .
NUnit и C#
UnmanagedCoder 07.06.2025
В . NET существует несколько фреймворков для тестирования: MSTest (встроенный в Visual Studio), xUnit. net (более новый фреймворк) и, собственно, NUnit. Каждый имеет свои преимущества, но NUnit. . .
с++ Что нового?
russiannick 06.06.2025
Продолжаю обзор dev-cpp5. 11. Посмотрев на проекты, предоставленные нам для обучения, становится видно, что они разные по содержащимся файлам где: . dev обязательно присутствует . cpp/ . c один из них. . .
WebAssembly в Kubernetes
Mr. Docker 06.06.2025
WebAssembly изначально разрабатывался как бинарный формат инструкций для виртуальной машины, обеспечивающий высокую производительность в браузерах. Но потенциал технологии оказался гораздо шире - она. . .
Как создать первый микросервис на C# с ASP.NET Core, step by step
stackOverflow 06.06.2025
Если говорить простыми словами, микросервисная архитектура — это подход к разработке, при котором приложение строится как набор небольших, слабо связанных сервисов, каждый из которых отвечает за. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
OSZAR »