Size: a a a

Ассемблер

2021 August 05

DB

Dima Bat in Ассемблер
недавно в этом чате человек кричал как трудно даже лампочкой помигать на нем
источник

DB

Dima Bat in Ассемблер
пока настоил проект
источник

DB

Dima Bat in Ассемблер
нервный срыв начался
источник

DB

Dima Bat in Ассемблер
🤣🤣
источник

DB

Dima Bat in Ассемблер
я думаю не юзать там HAL а кодить, на чистом си
источник

DB

Dima Bat in Ассемблер
у меня ведь не общая задача а конкретная, а под конкретную задачу конкретный мк
источник

DB

Dima Bat in Ассемблер
и hal этот не нужен. Это больше подрядным организациям нужно
источник

DF

Dollar Føølish in Ассемблер
ребят извините кто писал про полную загрузку программы при исполнении не совсем прав. если фс поддерживает деманд пейджинг, то физически загрузятся тольео используемые страницы даже при полном адресном пространстве образа.

а про линковку - да, обьектники из архива линкуются целиком по требованию (то есть не весь архив, но весь обьектрик)  избежать этого можно только через gc-sections или lto
источник

DF

Dollar Føølish in Ассемблер
ну или использовать джаву и классловдеры (простите)
источник

E

Entusiast in Ассемблер
А за что извиняться то?
источник

D

Den in Ассемблер
Вообще чтобы исполнить файл же его надо сначала загрузить, по идее загрузится он должен весь и полностью с диска в память вместе со всеми своими кодом, данными не данными что у него там от и до, потому, что могут же быть же еще всякие проверки crc hash и прочее например в коде файла или в алгоритме чтения во первых, а во вторых функции чтения в винде вроде как не подразумевают по дефолту чтения части файла если это специально не указать. А уже какая часть кода исполнится или нет это уже другой вопрос. Я сейчас не о виртуальной памяти говорю а об реальной, эта же программа с реальной памятью в первую очередь начнет работу на сколько я понимаю
источник

ВВ

Вячеслав Васютин... in Ассемблер
Фух... Я справился - создал я файл и сделал в него запись:
fasm cfw.asm crf && chmod +x crf && ./crf               flat assembler  version 1.73.09  (16384 kilobytes memory)                                     3 passes, 325 bytes.                        @cloudshell:~/Assem$ cat mylikedfile.txt
Welcome to 64 bit Linux! What's up?Welcome to 64 bit Linux! What's up?

Вот код:
format ELF64 executable
segment readable writeable executable

; Создаем файл
       mov rax, 2
       mov rdi, filename_path                
       mov rsi, O_CREATE
       mov rdx, 0666o
       syscall

; Записываем в файл
       mov rdi, rax
       mov [fd], rax
       mov rax, 1                            
       mov rsi, buf
       mov rdx, size                          
       syscall

       ; Закрываем файл
       mov rdi, [fd]                          
       mov rax, 3
       syscall                                                                              
       ; Завершение программы

       mov rax, 60
       syscall

segment readable writeable

filename_path db 'mylikedfile.txt',0
buf db "Welcome to 64 bit Linux! What's up?",0,10
fd: dq 0
size = $-filename_path
O_CREATE = 0102o  ;0x40


До этого у меня строка была такой:
mov rdx, 0777o    .
Оказывается, вполне достаточно было указать лишь биты на чтение/запись, а я посредством 0777о выставил еще и на выполнение, естественно, бит выполнения оказался лишним, и я сделал так:
mov rdx, 0666o
источник

ВВ

Вячеслав Васютин... in Ассемблер
И... Все сработало.
источник

E

Entusiast in Ассемблер
👍
источник

E

Entusiast in Ассемблер
А ты уверен, что работает? Потому что:

1. Ты не указал в режиме открытия доступ на запись
2. Ты используешь устаревший дефайн 0102, и так же он не равен 0x40. 0102 == 0x42


3. На самом деле, это не проблема, но флаги файла тут не причём
источник

E

Entusiast in Ассемблер
Работать не должно, и, я проверил - не работает.
источник

ВВ

Вячеслав Васютин... in Ассемблер
Но, у меня работает.
источник

E

Entusiast in Ассемблер
Очень странно
источник

ВВ

Вячеслав Васютин... in Ассемблер
Угу
источник

E

Entusiast in Ассемблер
Какое у тебя ядро на сервере?
источник