Size: a a a

Ассемблер

2021 August 16

s

s54816 in Ассемблер
Ну… там непросто. Во-первых, тебе нужен мап. Можно погрепать из cc kernel.c -Wl,-Map=kernel.map, или можно как-то ещё их генерить (я из .fas выдирал для фасма). Ну а потом просто ldsym "kernel.map". Но это если адреса фиксированные.
источник

d

disba1ancer in Ассемблер
у меня есть небольшая программка и ld скрипт к ней, это как-то поможет?
источник

s

s54816 in Ассемблер
Ну вот ты ld скажи, чтобы он тебе -M или -Map, а потом выдирай оттуда всё, что выглядит как 0xaddr name. Чем угодно. Не знаю, может bochs и сырой выхлоп ld прожуёт, я не пробовал.
источник

d

disba1ancer in Ассемблер
хотя, похоже, что кроме имён функций мне это ничего не даст
источник

s

s54816 in Ассемблер
Да. В фасме ещё локальные метки, но не переменные.
источник

d

disba1ancer in Ассемблер
получается, что погонять в ide только через gdb
источник

s

s54816 in Ассемблер
gdb-стаб там тоже есть :) Я, правда, уже сто лет им не пользовался, и не помню, что там с реалмодом.
источник

d

disba1ancer in Ассемблер
он работает, если правильно собрать, а вот gdb от него не в восторге
источник

d

disba1ancer in Ассемблер
банально не могу точку останова на нулевом адресе поставить
источник

s

s54816 in Ассемблер
Прямо на нулевом? В реалмоде? Там же вектора. А так, у меня работает что-то:
(gdb) b *0x7c00
Breakpoint 1 at 0x7c00
(gdb) c
Continuing.

Breakpoint 1, 0x00007c00 in ?? ()
(gdb)
источник

d

disba1ancer in Ассемблер
в рилмоде нулевой ip в разных сегментах может быть, gdb это не различает
источник

s

s54816 in Ассемблер
Так считай линейный адрес сам.
источник

d

disba1ancer in Ассемблер
нет, всё-таки получилось, видимо до этого что-то было не так
источник

d

disba1ancer in Ассемблер
gdb так не умеет, он на только на ip ориентируется
источник

d

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

A

Aleksandr in Ассемблер
Для таких извращенцев придумали djgpp. А вообще рилмод особо не отлаживают ничем кроме эмуляторов
источник

A

Aleksandr in Ассемблер
У бочса сносный дебаггер, встроенный
источник

d

disba1ancer in Ассемблер
буду надеятся что действительно это так и получится
источник

d

disba1ancer in Ассемблер
в курсе, особенно если включить гуй
источник

A

Aleksandr in Ассемблер
Там такой гуй что его довольно быстро хочется выключить
источник