с ассемблер кода:
[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 и внешние подключения?
ORG 0 BITS 32
1. Синтаксис не такой 2. Куда ты в бинарник символ extern засунешь? Это только для обьектников. Использовал бы ты FASM... Эх.
Ты по-сути определись, тебе extern нужен, или org. Если org - тогда всё на ассемблере писать будешь, либо на С напишешь ядро в виде бинарника, и напишешь загрузчик на ассемблере, который этот бинарник будет подгружать. А потом можно и склеить. Если extern - тогда готовь конфиг линковщика, чтобы свой обьектник в бинарник залепить. И в том же конфиге пропишешь лепку ядра. Дааа... А вот если бы ты на FASM писал...
Вот этих section не было бы, вообще код был бы красивее, удобнее, компиляция была бы проще (всё не флагами передаётся, а прямо в коде прописывается), и вообще всё круто было бы.
вы были бы защищены в чате от обвинения в ереси, за "неправильные" суждения :)
При чём тут это? Я предлагаю лучший вариант. Но не заставляю. Пусть хоть на TASM пишет. А ещё лучше - на GAS вообще. 😁
по газу в осдев вики вроде как есть хорошее описание на загрузчик
Это не конфиг... Даааааааа, это тебе в чат по OSDev. Долгий путь тебе предстоит, тормозок готовь.
Недолгое время я был в их числе...
Ты не тому ответил, наверное.
Это не так плохо.
Да.
Да, не худший вариант из возможных
Я на MASM тоже писал, мне вот понравилась IDE, написанная на MASM, для разработки кода на MASM, в виде Delphi. Открываешь, и там тебе сразу форму дают, лепишь кнопочки, и вот тебе программа на ассемблере. Прикольно. Но на FASM всё же лучше, да и вообще с нуля писать окно лучше, чем лепить в редакторе форм.
а зачем? на логику больше времени уйдёт, а набросать и в vb6 можно
Ну просто все эти мучения с координатами не очень приятны, а в конструкторе привязки есть
Так это простейшая математика. X = (ширина_окна/2)-(ширина_кнопки/2) Можно макрос сделать.
В OSDev иди, там есть готовый пример, называется "Bare Bones".
Если понять логику, можно вручную как раз даже быстрее писать. В уме просто представляешь окно это, и что тебе надо сделать. Чтобы по центру - делишь ширину на 2, делишь кнопку на 2, и это начальная позиция — её центр ляжет ровно в центр по ширине окна (потому что на 2 поделили). С Y аналогично. Чтобы чуть ниже вторую кнопку положить - аналогично получаешь начальную позицию по центру, и по Y прибавляешь размер предыдущей кнопки+небольшой отступ, готово. Вот тебе 2 кнопки красивенькие. Можешь первую кнопку вверх чуть поднять по Y, чтобы они обе по центру лежали.
Обсуждают сегодня