- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 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
.MODEL small ;отводим под стек и под данные по 64Кб код занимает 1 сегмент, данные и стек обьеденены в одну группу
.STACK 100h ;отмечаем начало сегмента стека
.DATA ;отмечаем начало сегмента данных
_STDOUT_ equ 1 ; из синтаксического описания видно, что с помощью equ идентификатору
;можно ставить в соответствие как числовые выражения, так и текстовые строки,
;а псевдооператор “=” может использоваться только с числовыми выражениями;
vivod db 0Dh, 0Ah, '$' ; $-кон. стр.
String db 82 dup(?); выделение памяти для строки
PosLen db 14 dup(?); выделение памяти для строки (числа)
Pos dw ? ; память для первого числа
Len dw ? ; для второго
.CODE ;отмечаем начало сегмента кодов
preob proc ; процедура преобразования из строки в число
xor ax, ax
mov bx, ax
mov cx, 10 ; для реализации цикла
_repeat:
mov bl, [si] ; помещаем в bl символ строки
inc si ; в si переходим к ячейке следующего символа
sub bl, '0'; преобразуем ASCII код в число
jb _break ; если SF = 1 то выходим из процедуры(указывает, что между числами стоит пробел, числовой код пробела меньше числового кода нуля)
cmp bl, 9 ; сравниваем, если число больше 9 - то это символ - идём на выход
ja _break
mul cx
add ax, bx ;прибавляет в регистр ax нужное число
jmp _repeat
_break:
ret ; возврат в в главный код
preob endp
main PROC
;инициализация сегментного регистра ds адресом сегмента данных
mov ax, @data
mov ds, ax
;ввод строки
mov [String], byte ptr 80
mov ah, 0Ah
lea dx, [String]
int 21h
;ввод строки чисел
mov al,10 ; перенос строки
int 29h ; быстрый вывод символов на экр(экон байт)
mov [PosLen], byte ptr 14
mov ah, 0Ah
lea dx, [PosLen]
int 21h
;преобразование строки в первое число
lea si, [PosLen+2]
call preob
mov [Pos], ax
call preob
mov [Len], ax
mov al,10 ; перенос строки
int 29h ; быстрый вывод символов на экр(экон байт)
mov ah, 40h ;номер функции помещается в ah
mov bx, _STDOUT_ ;в bx хранится дескриптор стандартного выходного потока
mov cx, [Len] ; кол-во выводимых символов
lea dx, [String+1] ; адрес буфера вывода
add dx, [Pos] ; берем 1 сим. и добавляем число, чтобы перейти к нужному нам символу
int 21h
;завершение программы
xor ax,ax
int 16h
mov ax,4c00h
int 21h
MAIN ENDP
END MAIN
ASD_77 20.12.2021 16:09 # +2
doomginho 31.07.2024 17:15 # 0
CHayT 20.12.2021 16:17 # +3
Чтобы понять логику, рекомендую первый том Software Foundations.
tuple 20.12.2021 16:23 # 0
guest6 20.12.2021 16:24 # 0
JloJle4Ka 20.12.2021 19:10 # +1
Видимо, хочет заготовить нашей группе страшную задачку на ASMе...
Rooster 20.12.2021 19:17 # +1
JloJle4Ka 20.12.2021 19:20 # +1
Типа...
«if dic[i].in() { std::cout << dic[i].out }», что означает примерно следующее:
«Если хуй внутри, скажи, чтоб вытащил»
guest6 20.12.2021 19:53 # +1
хуёд
Rooster 20.12.2021 20:57 # 0
guest6 20.12.2021 16:20 # +4
Какая строчка вызывает у тебя затруднения?
tuple 20.12.2021 16:35 # 0
guest6 20.12.2021 16:39 # +2
ASCII код ноля -- 48.
Единицы -- 49.
итд
То есть чтобы превратить '8' в 8, надо из кода '8' (56) вычесть код '0' -- 48
https://ru.wikipedia.org/wiki/ASCII
tuple 20.12.2021 16:44 # 0
правильно ли я понимаю, что в 28 строке мы в ax заносим это число?
И для чего нам нужна 27 строчка кода?
gEKA6PbCKuu_nemyx 20.12.2021 16:49 # 0
ASD_77 20.12.2021 16:49 # +1
ax = 5,
ax * cx = 50
ax + 3 = 53
ax * cx = 530
ax + 1 = 531
Soul_re@ver 20.12.2021 16:50 # +3
Пример: ввели 279; в ах сейчас лежит 27, в bx мы только что конвертировали '9' в 9.
mul cx ; ax - 27 → 270
add ax, bx ; ах 270 → 279
Говнокод образовательный, блин.
gEKA6PbCKuu_nemyx 20.12.2021 16:52 # +1
bormand 20.12.2021 17:46 # 0
gEKA6PbCKuu_nemyx 20.12.2021 17:56 # +1
1024-- 21.12.2021 11:23 # +1
> чтобы совсем стало понятно
Не факт, что это добавит понимания.
Я кучу раз делал парсинг/стрингификацию чисел, но от схемы Горнера знал только название. Может, разок слышал во вводной лекции по матану про оптимизацию для квадратного уравнения, где x выносили из первых двух членов.
Сейчас прочитал в первый раз жизни про схему Горнера, осознал, что число - это частный случай полинома с x=10.
Но это делает вещи понятнее только для математика. Как в том анекдоте, "чтобы представить 4-мерный куб, просто представь N-мерный, а затем прими N=4".
guest6 20.12.2021 16:52 # +4
52 это не 5 +2, это 5 умножить на 10 плюс два, верно?
cx у нас это 10 (см 19 строку)
mul cx умножает cx значение в регистре ax, результат помещается обратно в ax
иными словами, это умножение на десять, такой вот десятичный "сдвиг"
tuple 20.12.2021 16:59 # 0
почему в 10 строке для строчки мы выделяем 82 памяти, а потом когда происходит ввод строки в 40 строчке кода, там 80?
gEKA6PbCKuu_nemyx 20.12.2021 17:03 # 0
Всё правильно написано, буфер в формате паскалевской строки. Только обычно «byte ptr» пишут перед квадратной скобкой.
tuple 20.12.2021 17:09 # 0
gEKA6PbCKuu_nemyx 20.12.2021 17:11 # 0
Rooster 20.12.2021 17:32 # 0
Т.е. там должно быть не 80, а 81
Rooster 20.12.2021 17:33 # +1
Приведение типов сработало
gEKA6PbCKuu_nemyx 20.12.2021 17:48 # 0
bormand 20.12.2021 17:49 # 0
Именно поэтому я за movb
guest6 20.12.2021 17:51 # 0
в школе твой синтаксис не учат
bormand 20.12.2021 17:52 # 0
Rooster 20.12.2021 17:55 # 0
gEKA6PbCKuu_nemyx 20.12.2021 17:11 # 0
tuple 20.12.2021 17:20 # 0
можете объяснить что происходит с 61 по 68 строку, пожалуйста?
guest6 20.12.2021 17:22 # +1
Это такой способ вызвать функцию. А аргументы ей обычно передают через регистры.
например кладем в al 10, а потом вызываем
http://biosprog.narod.ru/real/dos/int29.htm
а чтобы узнать, что такое 10, мы заглянем в таблицу ASCII
tuple 20.12.2021 17:34 # 0
guest6 20.12.2021 17:38 # +1
потом готовимся к вызову прервания 21h, которое в ah принимает номер фуркции
Дальше тебе нужно почитать что это за функция такая -- 40h
http://www.codenet.ru/progr/dos/dos_0067.php
А если ты не знаешь что такое STDOUT, то там питух ниже пояснил
tuple 20.12.2021 17:41 # 0
guest6 20.12.2021 17:48 # +2
Если захочешь копнуть глубже, то ASM в лёгкой и увлекательной форме описан у Ирвина
https://vk.com/wall-51126445_18046
gEKA6PbCKuu_nemyx 20.12.2021 17:36 # +2
Дескриптор — это номер открытого файла во внутренней таблице открытых файлов. Некоторые потоки ввода-вывода имеют фиксированные номера на момент старта программы (их предварительно открывает сам ДОС без нашей просьбы). Это дескриптор номер 0 — стандартный ввод, номер 1 — стандартный вывод, номер 2 — стандартный вывод служебных сообщений (он не перенаправляется знаком «больше» в командной строке, в отличие от дескриптора 1). Здесь мы выводим в _STDOUT_, который равен 1.
guest6 21.12.2021 01:10 # 0
Про пайпы давай. Про редиректы.
ObeseYoung 21.12.2021 06:18 # 0
Stallman 20.12.2021 16:27 # +2
tuple 20.12.2021 16:40 # 0
Soul_re@ver 20.12.2021 16:34 # +5
Они экономят байт. Байт, сука, они экономят. Ёбаный байт. Экономят. В 2021.
guest6 20.12.2021 16:36 # +2
ISO 20.12.2021 19:27 # +3
Они даже в комментариях экономят байты!
ObeseYoung 21.12.2021 06:07 # 0
bormand 21.12.2021 00:22 # +1
Да ладно, я вот из логов на днях выкидывала буковки, чтобы бинарь на 16 байт ужать...
CHayT 21.12.2021 00:28 # +4
guest6 21.12.2021 00:38 # +2
bormand 21.12.2021 00:40 # 0
j123123 21.12.2021 00:43 # 0
bormand 21.12.2021 00:47 # 0
Так что я думаю нет.
Fike 21.12.2021 00:49 # −1
bormand 21.12.2021 00:49 # 0
3.14159265 21.12.2021 01:18 # +1
А вот вступлюсь за гоферов.
Портабельные бинари это кстати не так и плохо. Даже не знаю что хуже.
В Йаже/С№ вон линковки нет. Просто скидывают оттраслированные .class в zip jar.
Правда если нельзя сделать shared executable тоже gовно.
Зато хорошо показывает оверинжинирные дутые рантаймы у современных средств разработки.
bormand 21.12.2021 01:21 # 0
Fike 21.12.2021 01:24 # 0
guest6 21.12.2021 01:26 # 0
туда тоже надо покласть свою dllку, но только неподписанные (не стронг) туда вроде не кладутся
3.14159265 21.12.2021 01:31 # 0
Люди подымают версию log4j. Код компилируется, всё нормально как и со старой версией.
А вот при запуске лезут ошибки в рантайме.
И такое периодически бывает, т.к. нет стадии линковки.
Это общая проблема. Я уже писал раньше
https://govnokod.ru/26961#comment576303
> Вместо линкера в мире лалок принято ебошить: http://c.d.n/pitux.latest.js. А потом эпично ломаться, когда latest меняет api.
bormand 21.12.2021 02:28 # 0
guest6 21.12.2021 02:33 # 0
у жавы тоже есть JULI, но уже успели насрать slf4j и log4j
3.14159265 21.12.2021 02:41 # 0
Меня всегда это удивляло обилие этой питушни. slf4j это вроде обёртка или декоратор.
Зачем? Зачем?
guest6 21.12.2021 11:40 # 0
Потому что есть такое правило:
Если в стандартной библиотеке языка нету какого-то готового решения, то через три года использования у тебя будет сорок четыре не совместимых с друг другом решения, и это уже навсегда
guest6 21.12.2021 01:25 # +1
А что бинарь весит 80 мегабайт и не шарит страницы кода в памяти (он же не шарит?) так это похуй в 2021-м году, когда у тебя двадцать VPSок по 100 баксов каждая
3.14159265 21.12.2021 01:27 # +1
> не ебаться там с версией питона, библиотек, установкой их, итд.
Какой docker )))
guest6 21.12.2021 01:29 # +2
ну вот тебе нужна тула чтобы собрать какую-то инфу с VPSки, и послать ее на нужный сервер. Докеровский имадж с питоном это оверголова малость
Ах да, го вроде еще кроссплатформенное
то есть он и на рабочей машине запускает ее, и на сервере
3.14159265 21.12.2021 01:38 # +1
> Докеровский имадж с питоном это оверголова малость
Согласен. Выше написал что портабельные бинари это не так плохо.
Сам попадал в ситуацию когда нужно сначала apt/dnf install <тут дохуя>
Потом pip3 install. Потом оказывается что коду нужен новый meson (блять!).
А питон 3.6 из репы уже не поддерживается уже новым meson (гандоны ебаные!). Ставишь новый питон. Окей, поставил.
Потом ещё нужно какой-то pytorch, а ему нужна conda (БЛЯТЬ НАХУЯ ВЫ НАПЛОДИЛИ НЕСКОЛЬКО ПАКЕТНЫХ МИНЕТЖЕРОВ), итд.
Мудаки и говно. Говно и мудаки. Мудаки в говне. Говно на мудаках. Py-здец.
guest6 21.12.2021 01:41 # 0
https://ahmed-nafies.medium.com/pip-pipenv-poetry-or-conda-7d2398adbac9
3.14159265 21.12.2021 01:46 # +1
Уровни абасракции ростут как грибы.
guest6 21.12.2021 01:48 # +2
3.14159265 21.12.2021 01:50 # +1
Вот-вот. А goвнюк со своими 150 мегабайтами натива ещё посмеётся над питухами.
Мало того что нужно ставить 50 метровый докер. Так ещё и гиговый образ с ненужной убунтой.
bormand 21.12.2021 00:53 # 0
j123123 21.12.2021 00:56 # +2
However, on some platforms under certain circumstances the C runtime library gets dynamically linked in. In particular, this was the case with Go versions < 1.5 on Linux when DNS resolution was used: the runtime depended on the platform's libc implementation to handle such resolution. In 1.5 this has been reworked.
Another possible case is (IIRC) Solaris which provides no stable way to access the kernel's syscalls directly and requires routing these calls through the platform's libc.
guest6 21.12.2021 01:01 # +1
Кстати, у тебя ведь тоже мюсля, если ты ембедщик?
bormand 21.12.2021 01:02 # 0
Что там от неё останется то? memset да memcpy? Ну ладно, printf.
guest6 21.12.2021 01:04 # 0
фу
bormand 21.12.2021 01:06 # 0
А в контроллерах их, как правило, нет. Хотя какой-то небольшой его обрезок можно засунуть, если делать нечего...
j123123 21.12.2021 01:14 # +1
bormand 21.12.2021 01:15 # 0
guest6 21.12.2021 01:33 # 0
чтобы универсально и абстрактно всё
bormand 21.12.2021 01:34 # 0
guest6 21.12.2021 01:36 # 0
Вот например софтварный роутер микрота занимает 128 мегабайт на HDD, а сколько займет сервер убунту?
тем не менее, ставят
bormand 21.12.2021 01:41 # 0
j123123 21.12.2021 01:10 # +1
musl завязан на ядро Linux, а у меня в контроллерах нет никакого Linux. Я https://www.sourceware.org/newlib/ как-то использовал
guest6 21.12.2021 01:14 # 0
j123123 21.12.2021 01:24 # 0
3.14159265 21.12.2021 01:24 # 0
> Using cgo which is a layer to interface Go code with foreign C code. Using cgo makes your Go program depend on the C runtime
> The cgo documentation says that cgo is enabled by default for native builds. So, it looks like one has to set CGO_ENABLED=0 to make sure that there is no a dependency on C runtime
Очередная «йаже-как-сишка» едет на всём ворованном.
Сделали стометровый бинарь, вроде без зависимостей.
Со всем что было заявлено обосрались. Говорили без зависимостей, а ему надо libc.
Опять собрали худшее из всех миров: бинарник циклопичный, зато зависимости есть.
guest6 21.12.2021 01:27 # 0
В винде правда тоже нельзя вот прямо со всем, но с CRT можно
Все равно останутся всякие user32 и gdi32 (виртуальные, бо сейчас minwin) но они на любой винде есть (кроме WinPE вроде, джае на Core) а вот libc на alpine может и не быть
gEKA6PbCKuu_nemyx 21.12.2021 01:35 # 0
guest6 21.12.2021 01:38 # 0
gEKA6PbCKuu_nemyx 21.12.2021 01:40 # 0
Если первое, то да, можешь запустить. Единственное, может не хватить каких-то служб или какой-то хрени в реестре.
ObeseYoung 21.12.2021 06:46 # 0
gEKA6PbCKuu_nemyx 21.12.2021 10:41 # 0
http://www.oszone.net/3201/
bormand 21.12.2021 01:33 # +1
А что делать, если официальное апи у ядра идёт только с кучей нинужной хуйни от сишки в нагрузку?
Сишники всё в кучу смешали, а остальным теперь страдать.
guest6 21.12.2021 01:35 # 0
"linux.h" и было бы описано в терминах c89 и вызовов сисколов
bormand 21.12.2021 01:38 # +3
Ну вот ты опять сишку тащишь...
В виде xml'ки с сисколлами, версиями в которых они появились и регистрами. Кому надо хедер -- сгенерит по этому описанию. Под любой язык.
guest6 21.12.2021 01:40 # 0
ну ок, да, так было бы лучше.
guest6 21.12.2021 01:57 # +2
bormand 21.12.2021 02:10 # +1
А дальше генери себе хоть сишку хоть кресты хоть паскаль хоть джаву.
И не надо парсить сраные хедера.
guest6 21.12.2021 02:11 # 0
WinMD еще есть
bormand 21.12.2021 02:12 # 0
guest6 21.12.2021 02:14 # 0
сишный API зато не зависит от архитектуры. На MIPS и на x86 же могут быть РАЗНЫЕ сисколы на прыщах, не?
bormand 21.12.2021 02:15 # 0
На сишке просто костыли воткнуты для эмуляции недостающих.
guest6 21.12.2021 02:17 # 0
было бы грубо говоря
bormand 21.12.2021 02:18 # 0
guest6 21.12.2021 02:19 # 0
Вообще классический юникс апи (а прыщи все таки наследуют юникс) это сишка. Так что всё равно получилось бы как с Win32: формально было бы можно сделать много разных API, а по сути всем было бы похуй на всё, кроме сишного.
ASD_77 21.12.2021 02:48 # 0
guest6 21.12.2021 01:02 # 0
Fike 21.12.2021 00:49 # 0
guest6 21.12.2021 01:03 # 0
Если хочу поддерживать Win 8.1, то мне надо ставить свежий .NET небось?
Ну как с CRT
3.14159265 21.12.2021 02:01 # 0
This calls for a story. At the Fog Creek New Year’s Eve party, we wanted a bunch of computer screens in the main room to display a countdown until midnight. Michael wrote an application to do this in C# with WinForms in about 60 seconds. It’s a great development environment.
My job was getting countdown.exe to run on three computers. Sounds easy.
Nope. Double click the EXE, and I got a ridiculously user-hostile error message about mscoree.dll or something, followed by a gratuitous dump of my path. No mention of the fact that the problem was simply that the .NET runtime was not installed. Luckily I’m a programmer and I figured that must be the problem.
How do you install the runtime? The “easiest” way is through Windows Update. But Windows Update really wanted me to get all the critical updates first before I installed the runtime. That’s reasonable, right? Two of the “critical” updates were a Windows service pack and a new version of Internet Explorer, both of which required a reboot.
All told, for each computer I needed to run this little .NET application on, I had to download something like 70 or 80 MB (good thing we have a fast net connection) and reboot three or four times. And this is at a software company! I know how long it took, because the first time it started downloading, I put Office Space on the big screen TV, and by the time the movie was over, the installation process was almost finished. Every ten minutes during the movie I had to jump up, go to each computer, and hit OK to some stupid dialog box.
guest6 21.12.2021 02:04 # +1
Файк показывал
МС услышал комплейны своего бывшего сотрудника Спольски
3.14159265 21.12.2021 02:07 # +1
guest6 21.12.2021 02:09 # 0
вроде вот про это шла речь
https://docs.microsoft.com/en-us/dotnet/core/deploying/#publish-self-contained
ну ок, может не один экхзешник, а еще парочка .dll, но они идут в пакете
не надо их ставить врунчую через windows update
3.14159265 21.12.2021 02:12 # +1
Requires pre-installing the runtime
Your app can run only if the version of .NET your app targets is already installed on the host system. You can configure roll-forward behavior for the app to either require a specific version of .NET or allow a newer version of .NET. For more information, see framework-dependent apps roll forward.
.NET may change
It's possible for the .NET runtime and libraries to be updated on the machine where the app is run. In rare cases, this may change the behavior of your app if you use the .NET libraries, which most apps do. You can configure how your app uses newer versions of .NET.
Серьёзно? Да все проблемы либцов и го просто меркнут на фоне такого позорища.
>собираться статически под винду, и зависеть только от WinAPI
> require a specific version of .NET
guest6 21.12.2021 02:15 # +1
а ты почитай Publish self-contained
3.14159265 21.12.2021 02:21 # +1
>The executable binary is produced for the specified target platform.
> Publishing for Linux or macOS, a word_reader file is created.
На словах звучит годно. Если есть кроссбилды даже на другие ОСи.
Но как мы знаем по Йаже: write once, debug everywhere.
guest6 21.12.2021 02:23 # 0
если ты веб сайт написал то наверное он кросс-платформенный, а если командлайн тулу то уже сложнее, а если там P/INvoke или ComInterop, то всё
в целом же по идее получается один большой бинарь как в го, но ты можешь выбирать: например самому обновлять версии .net и перевыпускать приложение, или переложить это на сисадмина
3.14159265 21.12.2021 02:27 # 0
Но самое смешное что похоже они паковали весь .NET, а потом поняли что ненужные куски можно выкидывать.
> Tip: IL trimming can further reduce the size of your deployment.
> https://docs.microsoft.com/en-us/dotnet/core/deploying/trimming/trim-self-contained
> Depending on the complexity of the application, only a subset of the framework assemblies are referenced
> and a subset of the code within each assembly is required to run the application.
> The unused parts of the libraries are unnecessary and can be trimmed from the packaged application.
Какой strip )))
Not invented here во все поля.
guest6 21.12.2021 02:32 # 0
а вот питонисты еще до этого не дошли, я вроде бы не могу отказаться от богатой стандартной либы
3.14159265 21.12.2021 02:43 # +1
Ух ты, да неужели. А можно пужулуста ссылку?
Я думал они до идеи линкера лет эдак через 5 дойдут.
Вообще мне нравится как лалки переизобретают технологии 50-60 летней давности.
Джавашки вон в 2021 «изобрели» struct, который был ещё в Алголе-68! Назвали правда record (привет Паскаль!).
https://govnokod.ru/27041
> Java Records Sep 11, 2021
> A Record is a special form of class in Java. It was released in Java 16, after being introduced as a preview feature in Java 14.
Может лет через 10 додумаются стырыть disjoint union, который появился в том же Алголе. И pattern matching из MLов.
guest6 21.12.2021 02:50 # +1
Fike 21.12.2021 06:33 # 0
Это даже все еще не struct, лол, просто упакованный геттер-бойлеплейт с генерацией внятных хэшкодов
guest6 21.12.2021 11:31 # 0
3.14159265 27.12.2021 02:16 # 0
Не это именно что struct. Там же всю объектный оверхед выпилили.
Например нет возможности написать synchronized на value типе, как это делалось на объекте.
Гость правильно говорит: оно будет на стеке передаваться как value-type.
Fike 27.12.2021 02:26 # 0
https://stackoverflow.com/a/63365195
https://godbolt.org/z/YebesEeax
вы переоцениваете джаву
> Гость правильно говорит: оно будет на стеке передаваться как value-type.
по тем же правилам, что и обычные классы
3.14159265 27.12.2021 02:17 # 0
Оу, ши. Я только сейчас узнал что в Йажу года 4 назад тоже подвезли линкер.
https://openjdk.java.net/jeps/282
Updated 2017/05/19 02:01
Create a tool that can assemble and optimize a set of modules and their dependencies into a custom run-time image as defined in JEP 220.
JEP 261 defines link time as an optional phase between the phases of compile time (the javac command) and run-time (the java run-time launcher). Link time requires a linking tool that will assemble and optimize a set of modules and their transitive dependencies to create a run-time image or executable.
Link time is an opportunity to do whole-world optimizations that are otherwise difficult at compile time or costly at run-time. An example would be to optimize a computation when all its inputs become constant (i.e., not unknown). A follow-up optimization would be to remove code that is no longer reachable.
Description
A basic invocation of the linker tool, jlink, is:
$ jlink --module-path <modulepath> --add-modules <modules> --limit-modules <modules> --output <path>
Fike 27.12.2021 02:28 # 0
на выходе вы реально получите даже не зип-архив, в просто копию jdk с вырезанными модулями и вставленным пользовательским кодом
ASD_77 21.12.2021 02:55 # 0
ObeseYoung 21.12.2021 17:13 # 0
Fike 21.12.2021 06:31 # 0
с PublishSingleFile или как-то так - вполне один
там есть проблема с тем, что какие-то вещи он в этом случае может распаковывать в /tmp (вместо того, чтобы читать прямо из файла), но вроде над этим активно работали
guest6 21.12.2021 02:21 # +2
покажем Пи депенденси вокером или dumpbinом что оно ни от чего не завиист кроме винды
3.14159265 21.12.2021 03:00 # +1
Fike 21.12.2021 07:32 # 0
Soul_re@ver 21.12.2021 10:29 # +1
А на ХР SP1 пойдёт?
guest6 21.12.2021 10:42 # +2
guest6 21.12.2021 01:02 # +1
ты качаеш один файл и течечешь
j123123 21.12.2021 01:43 # 0
Намертво вкомпиленый в программу на Go рантайм кстати тоже может быть несовместим с каким-то там ядром.
bormand 21.12.2021 01:44 # +1
j123123 21.12.2021 01:52 # 0
С хелловордом проблем нет
guest6 21.12.2021 01:55 # 0
2. https://stackoverflow.com/questions/2725255/create-statically-linked-binary-that-uses-getaddrinfo
3.14159265 21.12.2021 01:58 # 0
guest6 21.12.2021 01:59 # 0
так он его сам напишет, и сделает свою либсю
может даже с printf
bormand 21.12.2021 02:02 # 0
Самое сложное тут -- уломать конпелятор, чтобы он не выражал твой memcpy через твой memcpy.
guest6 21.12.2021 01:47 # 0
Алсо, нельзя вроде по GPL это делать
Именно потому статически линковаться лучше с мюслей
ASD_77 20.12.2021 16:52 # +2
guest6 20.12.2021 16:54 # +1
ASD_77 20.12.2021 17:10 # +2
guest6 20.12.2021 17:15 # +1
ASD_77 20.12.2021 17:59 # +2
guest6 20.12.2021 18:07 # +3
нет
Опкоды легко транслируются в асм
а си -- нет
потому что си это компиляция, а не трансляция
Rooster 20.12.2021 18:30 # +3
Компиляция это и есть частный случай трансляции.
Просто асм почти один в один отображается в опкоды, а Си —– нет.
bormand 21.12.2021 01:01 # 0
А что там сложного? Сложно сделать оптимизацию не поломав семантику. А дословную сишку легко запилить и она будет очень близка к асму.
guest6 21.12.2021 01:05 # 0
bormand 21.12.2021 01:48 # 0
guest6 21.12.2021 01:52 # 0
bormand 21.12.2021 01:59 # 0
И если нет оптимизатора, то каждая сишная конструкция раскрывается в очень простой набор опкодов и не цепляется за остальные.
Именно поэтому няшная и считается "кроссплатформенным асмом".
guest6 21.12.2021 02:01 # 0
Но я согласен с тем, что сишка оперирует максимально близкими к реальной аппаратуре понятиями: структуры из заранее известного количества байт и массивы этих структур (с поправкой на выравнивание)
gEKA6PbCKuu_nemyx 20.12.2021 16:56 # +1
ASD_77 20.12.2021 17:04 # 0
bormand 20.12.2021 17:09 # +2
Причём пишешь конпелятор )))
Rooster 20.12.2021 17:35 # +1
ASD_77 20.12.2021 18:01 # +1
Rooster 20.12.2021 18:04 # 0
gEKA6PbCKuu_nemyx 20.12.2021 17:14 # 0
1024-- 21.12.2021 11:41 # 0
То есть ассемблер помогает программисту незаметно как руткит, который завладел сознанием?
Или легко говорить, когда знаешь и нелегко говорить, когда не знаешь, ведь только тот, кто знает ассемблер, может ответственно заявлять, что он нафиг не нужен?
P.S. Хотел возразить, что я не знаю ассемблер, и он нафиг не нужен, но вспомнил, что в вузе для какого-то микро-ко-ко-контроллера что-то на нём писал, да и какую-то свою питушню с исполнением кодов вроде эмулятора процессора, осуществляющего вычисления со стеком, писал. И теперь мне легко говорить, что знание асма не нужно.
gEKA6PbCKuu_nemyx 20.12.2021 16:58 # 0
ASD_77 20.12.2021 17:05 # 0
это что за высшие недоступные знания инопланетных цивилизаций?
gEKA6PbCKuu_nemyx 20.12.2021 17:27 # 0
Первоклашки делить числа не умеют, например.
Rooster 20.12.2021 17:38 # +1
guest6 20.12.2021 17:40 # +1
настоящие программисты умеют сичтать до двух
впрочем, некоторые и до 16-ти
ASD_77 20.12.2021 18:00 # +1
1024-- 21.12.2021 11:45 # 0
ObeseYoung 21.12.2021 06:12 # 0
Rooster 20.12.2021 17:36 # +3
ISO 20.12.2021 19:26 # +1
JloJle4Ka 20.12.2021 19:27 # +3
gEKA6PbCKuu_nemyx 20.12.2021 17:40 # +1
Rooster 20.12.2021 17:45 # +2
gEKA6PbCKuu_nemyx 20.12.2021 17:54 # +1
Rooster 20.12.2021 17:56 # +1
bormand 20.12.2021 18:08 # 0
gEKA6PbCKuu_nemyx 20.12.2021 18:11 # +1
Ну и часть клавишей на ноутбуках может отсутствовать. На некоторых могут отсутствовать Pause, Print Screen, Scroll Lock, правые клавиши-модификаторы.
Fike 20.12.2021 22:26 # +1
REISUB хуй сделаешь -_-
guest6 20.12.2021 18:54 # 0
оно было еще до самой HID, и там еще эмулилось
Steve_Brown 20.12.2021 17:58 # 0
gEKA6PbCKuu_nemyx 20.12.2021 18:04 # +3
BIOS считает это одним нажатием. Код стрелки будет в AH, а в AL будет ноль для цифрового блока и 0Eh для отдельной стрелки (в случае функции 10h).
Функция 0h сделает вид, что не заметила отдельную стрелку.
bormand 20.12.2021 18:08 # +1
gEKA6PbCKuu_nemyx 20.12.2021 18:13 # 0
Ну и NTVDM и DOSBOX её мумулируют.
j123123 20.12.2021 19:19 # +4
ISO 20.12.2021 22:00 # +6
bormand 21.12.2021 02:06 # +2
guest6 20.12.2021 21:13 # +2
я его покормил, он сейчас спит
Fike 20.12.2021 22:25 # 0
Лень ему блять ты посмотри на него
gne4do 20.12.2021 22:44 # 0
ObeseYoung 21.12.2021 06:15 # 0
doomginho 31.07.2024 17:18 # 0