nedoPC.org

Community for electronics hobbyists, established in 2002
Last visit was: 08 Nov 2024 17:47
It is currently 08 Nov 2024 17:47



 [ 129 posts ]  Go to page Previous  1 ... 5, 6, 7, 8, 9  Next
Кросс-ассемблер для PDP11/8080 (Windows/Linux, open-source) 
Author Message
Maniac
User avatar

Joined: 14 Oct 2023 06:59
Posts: 268
чем дело кончилось?
А это рабочий ассемблер?
https://shop-pdp.net/ashtml/asxget.php

_________________
uselessretro.blogspot.com


03 Dec 2023 10:56
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 23398
Location: Silicon Valley
shiny wrote:
чем дело кончилось?

последний косяк так и не исправил, а в остальном - всё работает
скачать можно на первой странице этого топика:
http://www.nedopc.org/forum/viewtopic.php?p=132945#p132945

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


03 Dec 2023 13:19 WWW
Senior
User avatar

Joined: 17 Jun 2014 04:29
Posts: 163
Location: 93.80.157.217
глянул мельком код и обнаружил, что активно используется вот такая конструкция с оператором new:
Code:
outOfMemory(new чего_то_там);

где outOfMemory -- это:
Code:
static inline T* outOfMemory(T* p)
{
    if(p) return p;
    throw std::runtime_error("Out of memory");
}


только меня одного смущает вот это вот всё?

_________________
https://radio-86rk.ru
кто я такой, чтобы спорить с самим собой


09 Feb 2024 04:53 WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 23398
Location: Silicon Valley
Главное работает :)

P.S. Кстати вот пример сборки кода под РК чтобы получились .rkr и .lst (это неочевидно и никак не отражено в документации):

Code:
.i8080
.include "filename.asm"
make_radio86rk_rom "test.rkr"

а также вставка bin-файла ( я это только по исходнику нашёл : )
Code:
insert_file "filename.bin"


P.S. Ха - а вставка файла ведь есть в документации! :lol:


You do not have the required permissions to view the files attached to this post.

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


09 Feb 2024 07:58 WWW
Senior
User avatar

Joined: 17 Jun 2014 04:29
Posts: 163
Location: 93.80.157.217
работать-то работает, но код абсолютно бесполезный.
мало того, что читабельность страдает, так исключение в outOfMemory никогда не возникнет.
по стандарту, если не переопределять функцию new_handler(), оператор new, никогда не возвращает ноль.

_________________
https://radio-86rk.ru
кто я такой, чтобы спорить с самим собой


09 Feb 2024 08:47 WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 23398
Location: Silicon Valley
Да? Это с какого года так?
Вроде как раз выкидывание исключения убрали поэтому человек сам его добавил…

… или наоборот этот код для старых компиляторов написан, которые не выбрасывают исключение при нехватке памяти, а возвращают нулл
(вроде вижуалстудия себя так вела вплоть до версии 2003, хотя в тот момент это уже было частью стандарта C++)

P.S. Я гляжу по коду, что этот самый pdp11asm[85] умеет #define / #ifdef / #else / #endif :o
Только это в сишной части, которая фиг знает как включается...

P.P.S. Заготовки под макросы тоже вроде есть в parser.cpp, но там много закомменчено...

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


09 Feb 2024 15:13 WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 23398
Location: Silicon Valley
Shaos wrote:
Lavr wrote:
Да, судя по исходнику, коды для BVS и BVC перепутаны:

Image

Это в файлах pdp11.cpp и c_asm_pdp11.h...

понял - исправлю

Как говорится обещанного 3 года ждут - наконец-то исправил этот PDP11-косяк в сырцах на гитлабе :lol:

https://gitlab.com/shaos/pdp11asm85

Надо думаю ещё & добавить, чтобы можно было младший байт метки использовать...

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


09 Feb 2024 21:58 WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 23398
Location: Silicon Valley
Добавил % и & - теперь можно младший байт метки брать хоть так:
Code:
Label%256
хоть так:
Code:
Label&255
:D

https://gitlab.com/shaos/pdp11asm85/-/commit/9c90cfd15b61ae626f6f570441b057a98287677b

P.S. Обновлённый архив с исходниками приаттачил на первой странице этого топика :roll:

P.P.S. По поводу лицензии этого исходного кода: http://www.nedopc.org/forum/viewtopic.php?p=143028#p143028

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


10 Feb 2024 00:09 WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 23398
Location: Silicon Valley
Перенёс тему в подфорум Software, раз уж тут и про PDP-11, и про 8080/8085...

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


10 Feb 2024 00:25 WWW
Senior
User avatar

Joined: 17 Jun 2014 04:29
Posts: 163
Location: 93.80.157.217
вот что на сайте майкрософта нашёл

Quote:
Если для запроса на выделение недостаточно памяти, operator new создается std::bad_alloc исключение. Кроме того, он возвращается nullptr, если вы использовали форму new(std::nothrow) размещения или если вы связали в неисключаемой поддержке operator new


проверил код:
Code:
#include <iostream>
#include <new>
#include <stdio.h>

int main()
{
    try
    {
        while (true)
        {
            int* p = new int[100000000ul];
            if (!p)
                    printf ("p=0\n"); // [13]
        }
    }
    catch (const std::bad_alloc& e)
    {
        std::cout << "Allocation failed: " << e.what() << '\n';
    }
}


строка 13 никогда не будет вызвана.

_________________
https://radio-86rk.ru
кто я такой, чтобы спорить с самим собой


Last edited by vital72 on 10 Feb 2024 01:15, edited 1 time in total.



10 Feb 2024 01:07 WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 23398
Location: Silicon Valley
vital72 wrote:
вот что на сайте майкрософта нашёл

Quote:
Если для запроса на выделение недостаточно памяти, operator new создается std::bad_alloc исключение. Кроме того, он возвращается nullptr, если вы использовали форму new(std::nothrow) размещения или если вы связали в неисключаемой поддержке operator new
Сайт майкрософт всю старую инфу потёр :lol:
Когда этот код писался (2015-2017) в ходу были совсем другие компиляторы ;)
Я когда в 2018 готовил виндовую версию сего чюда вообще на XP ориентировался (правда с cygwin-ом 2010 года):
http://www.nedopc.org/forum/viewtopic.php?p=142305#p142305

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


10 Feb 2024 01:24 WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 23398
Location: Silicon Valley
Shaos wrote:
P.S. Я гляжу по коду, что этот самый pdp11asm[85] умеет #define / #ifdef / #else / #endif :o
Только это в сишной части, которая фиг знает как включается...
Кароче :lol:
т.к. автор вот тут писал:
alemorf wrote:
Если ассемблер встречает символ {, то дальше ведет себя как компилятор Си. Писал всего 5 часов, поэтому о серьзености компилятора СИ говорить рано.
я попробовал и оно заработало :mrgreen:
Code:
{
#ifdef BOO
}
   db   disasm_reg8_8085%256, 0xFF
{
#else
}
   db   disasm_reg8_8085/256, 0x20
{
#endif
}
именно так - фигурные скобки и директивы препроцессора в разных строках!
и главное, чтобы { не было совсем первой строчкой в файле, а то оно уходит в c8080 с концами, что нам ненадо :)
теперь наверное нужно передачу макро-определений из командной строки организовать ;)
типа -DBOO и т.д. и будет полноценная условная компиляция!

P.S. Организовал :)
Из командной строки теперь можно задавать макросы, причём как без значения, так и со значением:
pdp11asm85 -DMACRO1 -DMACRO2=1 filename.asm -DBOO
(без значения можно использовать в #ifdef, а со значением - где угодно (даже за пределами {}), правда эти значения должны быть в пределах байта)

https://gitlab.com/shaos/pdp11asm85/-/commit/639d411870cd3b8b405e9dd588c6a4908bdf6f85

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


10 Feb 2024 17:57 WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 23398
Location: Silicon Valley
Приаттачил пересобранный в WinXP EXE-шник вместе с CYGWIN1.DLL на первой странице топика:

http://www.nedopc.org/forum/viewtopic.php?p=132945#p132945

Какие ещё предложения по улучшению будут? Может сделать ключик командной строки, который будет включать i8080 или i8085?

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


10 Feb 2024 23:24 WWW
Maniac
User avatar

Joined: 14 Oct 2023 06:59
Posts: 268
cygwin это 5. Может, удобнее скомпилировать на венде?

_________________
uselessretro.blogspot.com


11 Feb 2024 09:31
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 23398
Location: Silicon Valley
shiny wrote:
cygwin это 5. Может, удобнее скомпилировать на венде?
Ну я на "венде" компилировал :)
Windows XP SP3 называется ;)
У меня стоит в углу машынёшка, которую я включаю раз в год по особым случаям :lol:

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


11 Feb 2024 09:55 WWW
 [ 129 posts ]  Go to page Previous  1 ... 5, 6, 7, 8, 9  Next

Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.