169 похожих чатов

У меня такой вопрос. Вот мне нужно сделать бинарный файл

с ассемблер кода:
[bits 32]
[org 0x7c00]
start:
cli
mov esp, stack_space
call _main

hlt

section .text
align 4
dd 0x1BADB002
dd 0x00
dd - (0x1BADB002 + 0x00)

global start

extern _main


stack_space:

times (510 -($-$$)) db 0x00
dw 0xAA55
Вот тут я использую дериктиву org, но при исполнении команды
nasm -f elf32 boot.asm -o boot.o
Я получаю ошибку: error: unrecognized directive [org]
Я меняю флаг команды место elf32 на bin и мне пишет ошибку что binary output format does not support external references
Можете подсказать как я могу сделать бинарный файл для qemu и с возможностью добавить дерикторию org и внешние подключения?

26 ответов

62 просмотра

ORG 0 BITS 32

1. Синтаксис не такой 2. Куда ты в бинарник символ extern засунешь? Это только для обьектников. Использовал бы ты FASM... Эх.

Ты по-сути определись, тебе extern нужен, или org. Если org - тогда всё на ассемблере писать будешь, либо на С напишешь ядро в виде бинарника, и напишешь загрузчик на ассемблере, который этот бинарник будет подгружать. А потом можно и склеить. Если extern - тогда готовь конфиг линковщика, чтобы свой обьектник в бинарник залепить. И в том же конфиге пропишешь лепку ядра. Дааа... А вот если бы ты на FASM писал...

Вот этих section не было бы, вообще код был бы красивее, удобнее, компиляция была бы проще (всё не флагами передаётся, а прямо в коде прописывается), и вообще всё круто было бы.

вы были бы защищены в чате от обвинения в ереси, за "неправильные" суждения :)

Mixail Frolov
вы были бы защищены в чате от обвинения в ереси, з...

При чём тут это? Я предлагаю лучший вариант. Но не заставляю. Пусть хоть на TASM пишет. А ещё лучше - на GAS вообще. 😁

КТ315
При чём тут это? Я предлагаю лучший вариант. Но не...

по газу в осдев вики вроде как есть хорошее описание на загрузчик

Это не конфиг... Даааааааа, это тебе в чат по OSDev. Долгий путь тебе предстоит, тормозок готовь.

Недолгое время я был в их числе...

Да.

КТ315
Это не так плохо.

Да, не худший вариант из возможных

The Bird of Hermes
Да, не худший вариант из возможных

Я на MASM тоже писал, мне вот понравилась IDE, написанная на MASM, для разработки кода на MASM, в виде Delphi. Открываешь, и там тебе сразу форму дают, лепишь кнопочки, и вот тебе программа на ассемблере. Прикольно. Но на FASM всё же лучше, да и вообще с нуля писать окно лучше, чем лепить в редакторе форм.

а зачем? на логику больше времени уйдёт, а набросать и в vb6 можно

Mixail Frolov
а зачем? на логику больше времени уйдёт, а наброса...

Ну просто все эти мучения с координатами не очень приятны, а в конструкторе привязки есть

Так это простейшая математика. X = (ширина_окна/2)-(ширина_кнопки/2) Можно макрос сделать.

В OSDev иди, там есть готовый пример, называется "Bare Bones".

The Bird of Hermes
Ну просто все эти мучения с координатами не очень ...

Если понять логику, можно вручную как раз даже быстрее писать. В уме просто представляешь окно это, и что тебе надо сделать. Чтобы по центру - делишь ширину на 2, делишь кнопку на 2, и это начальная позиция — её центр ляжет ровно в центр по ширине окна (потому что на 2 поделили). С Y аналогично. Чтобы чуть ниже вторую кнопку положить - аналогично получаешь начальную позицию по центру, и по Y прибавляешь размер предыдущей кнопки+небольшой отступ, готово. Вот тебе 2 кнопки красивенькие. Можешь первую кнопку вверх чуть поднять по Y, чтобы они обе по центру лежали.

Похожие вопросы

Обсуждают сегодня

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Почему стало ломаться на D11? "739002.86400000' is not a valid timestamp" function IncDateTime(aStamp:TTimeStamp;aKind:TTriggerKind;aInterval:Integer):TDateTime; //aStamp = 2...
Катерина Свиридова
8
Привет всем. Подскажите где можно посмотреть, какая версия электрон, поддерживает версии windows? Некий changelog. Мне бы желательно, поддержку 7,8,10... latest, как понимаю и...
Anonym Squad
21
Портфолио: Зовут меня Александр, мне 36 лет. Город Пушкино. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github....
Magic
10
Есть ли смысл устраиваться на 1с ? Даст это плюс в дальнейшем трудоустройстве на php? Просто у меня в городе вакансий на пхп нету. Или лучше удаленно искать. Опыта работы нету...
Azamat
14
Не ну фпц - это уже просто троллинг какой-то. Элементарный код нельзя собрать. ЧЯДНТ? program Project1; {$mode delphi} uses SysUtils, Classes, Generics.Collections; var...
Peter
4
а где есть mysql cloud кроме яндекс-клауд?
Oleg Nosov
13
hi im a cs student. i need some advice from people who have enough experience in Embedded Software. I need to know whether this profession is suitable for me. I have watched s...
Sahand 🏔️
8
А кто-нибудь запихивал сборку перловых модулей/образов с perl приложениями в окружения без интернета (в специализированном CI/CD)? У меня сейчас есть ряд cpanfile, которые н...
Andrey Smirnov / 𝓪𝓵𝓵𝓽𝓮𝓻 /
14
Карта сайта