Спасибо, похоже, что high работает.
Вид для печати
Спасибо, похоже, что high работает.
А что, нет стандартной функции побитного разворачивания/отражения числа?
Что-то в доках не нашел...
Я решил проблему с сегфолтом MODULE под линукс.
Использовал sjasmplus-src-1.07-rc7
Вот два патча.
Первый:
Код:--- directives.cpp.old 2008-04-02 10:21:16.000000000 +0700
+++ directives.cpp 2011-02-23 20:39:10.445291480 +0600
@@ -465,7 +465,7 @@
void dirMODULE() {
char* n;
- ModuleList = new CStringsList(ModuleName, ModuleList);
+ // ModuleList = new CStringsList(ModuleName, ModuleList);
if (ModuleName != NULL) {
delete[] ModuleName;
}
@@ -474,6 +474,9 @@
if (ModuleName == NULL) {
Error("No enough memory!", 0, FATAL);
}
+//
+ModuleList = new CStringsList(ModuleName, ModuleList);
+//
} else {
Error("[MODULE] Syntax error", 0, CATCHALL);
}
@@ -483,8 +486,14 @@
if (ModuleList) {
if (ModuleName != NULL) {
delete[] ModuleName;
- }
- if (ModuleList->string != NULL) {
+//
+ModuleName = NULL;
+//
+ }
+//
+ModuleList = ModuleList->next;
+//
+ if ( (ModuleList) && (ModuleList->string != NULL) ) {
ModuleName = STRDUP(ModuleList->string);
if (ModuleName == NULL) {
Error("No enough memory!", 0, FATAL);
@@ -492,7 +501,7 @@
} else {
ModuleName = NULL;
}
- ModuleList = ModuleList->next;
+// ModuleList = ModuleList->next;
} else {
Error("ENDMODULE without MODULE", 0);
}
И второй:
Прошу автора воткнуть исправления в основную ветку. Модули - штука хорошая.Код:--- sjdefs.h.old 2008-04-01 17:41:58.000000000 +0700
+++ sjdefs.h 2011-02-23 19:54:45.036263394 +0600
@@ -120,6 +120,7 @@
#include "io_snapshots.h"
#include "io_trd.h"
#include "sjasm.h"
+#include <stdlib.h>
#endif
//eof sjdefs.h
---------- Post added at 21:01 ---------- Previous post was at 21:00 ----------
В догонку.
Тут уже эту проблему где-то решали, но директива ENDMODULE неправильно у меня тем способом работала.
Собрал на github все публично доступные версии SJAsmPlus в репозиторий, добавил ChangeLog (из документации):
https://github.com/sjasmplus/sjasmplus
Виндовый экзешник, если кому надо: https://github.com/downloads/sjasmpl...06-mingw32.zip
http://i53.tinypic.com/2e33kfa.png
Отлично, а то у меня сил не хватало, чтобы собрать все воедино. Прибью тогда сайт на sf.net, чтобы не путал людей и сделаю переадресацию сюда в тему или на ваш репозиторий в github.
- Добавил в архив с exe необходимые dll и документацию
- Добавил aprisobal в collaborators на github (доступ на запись)
Для чего в Makefile
с этими флагами на FreeBSD не собирается:Код:LDFLAGS="-ldl"
Код:g++ -o sjasmplus "-ldl" -O2 -DLUA_USE_LINUX -DMAX_PATH=PATH_MAX -Ilua5.1 -Itolua++ sjasm/devices.o sjasm/directives.o sjasm/io_snapshots.o sjasm/io_trd.o sjasm/io_tape.o sjasm/lua_lpack.o sjasm/lua_sjasm.o sjasm/parser.o sjasm/reader.o sjasm/sjasm.o sjasm/sjio.o sjasm/support.o sjasm/tables.o sjasm/z80.o lua5.1/lapi.o lua5.1/lauxlib.o lua5.1/lbaselib.o lua5.1/lcode.o lua5.1/ldblib.o lua5.1/ldebug.o lua5.1/ldo.o lua5.1/ldump.o lua5.1/lfunc.o lua5.1/lgc.o lua5.1/linit.o lua5.1/liolib.o lua5.1/llex.o lua5.1/lmathlib.o lua5.1/lmem.o lua5.1/loadlib.o lua5.1/lobject.o lua5.1/lopcodes.o lua5.1/loslib.o lua5.1/lparser.o lua5.1/lstate.o lua5.1/lstring.o lua5.1/lstrlib.o lua5.1/ltable.o lua5.1/ltablib.o lua5.1/ltm.o lua5.1/lundump.o lua5.1/lvm.o lua5.1/lzio.o tolua++/tolua_event.o tolua++/tolua_is.o tolua++/tolua_map.o tolua++/tolua_push.o tolua++/tolua_to.o
/usr/bin/ld: cannot find -ldl
*** Error code 1
Stop in /opt/sjasmplus.
Для сборки на Linux. Для Мака и *BSD эту строку нужно закомментировать.