Ale jak může být závisí na instrukci? To bych tam musel použít JSA a to není standardní případ...
Příspěvky odeslané z IP adresy 78.136.166.–
Parser ne - kompilátor - už nějak blbnu... :)
Tak vyšší jazyk závislý být nemůže - závislý je jen v místě převodu do MachineCode... (Parser, virtuální stroj,...)
"protoze by pak jednou zkompilovana binarka na novejsim procesoru nemohla fungovat"
Není náhodou právě proto stroják potažmo JSA nepřenositelný? :)
Mě se hlavně nechce psát konkrétní instrukce - nedají se nějak získat dynamicky? (Aby byly vždy aktuální.)
#23 Tom
Konečně. :) Prostě strojáku moc nerozumím - JSA je můj domov... Chci se poučit od existujících vyšších jazyků. (Jak řeší problematiku vyšších funkcí, jak propojují instrukce atd.)
Nerad do Unixu (momentálně dočasně OpenUnix8 - čekám na UnixWare) cpu Windows... Také moc nemusím X... (90% CLI.) Každopádně si to již píši sám... :) (V D2.)
S těmi instrukcemi to tak je - každý assembler má pár vlastích jako třeba NASM. (Tedy příkazy, nebo jak to formulovat...)
Proč tu asi vytahuji HEX editory - chci to co dělá HEX editor jen místo strojového kódu JSA... Prostě změnit hotový program jako v HEX editoru - ovšem s čitelným kódem - s instrukcemi JSA...
Assembly jazyk:
mov cx, 20 # 20 otáček
ddd:
int 10h # typické přerušení
loop ddd
Assembler je program...
A strojový kód:
000010
00000
00000
00000
10000
000000
Nevím kdo znás spojuje jazyk s překladačem... Neovládám dobře a ani nechci dobře ovládat strojový kód. Umím v JSA a rozhodně se v něm lépe pracuje. Chtěl bych jen změnit soubor na strojové úrovni s použitím JSA... (Aby editor přeložil soubor do JSA a po mé editace uložil zpět do strojového kódu...)
Jak jsem psal - i kdybych si tipnul, který překladač to je. A i kdybych zkousnul nečitelnost některých instrukcí, které jsou specifické pro daný překladač, nebude to editor... (Nechci jen přeložt, ale i měnit v JSA - přitom stále na úrovni strojového kódu.) Skutečně si nepletu JSA a MachineCode...
Retn mi tedy nefunguje... (NASM)
Jak jsem psal - chtěl bych JSA editor souborů... (Místo strojového kódu JSA.)
90% sedí, a pár chybí... (Nepočítám rodinu nejmodernějších příkazů.)
Assembly != Assembler - jazyk != překladač...
Jak píši - neznám použitý Assembler - proto se ptám na ten editor. Další věc - editor - ne jen výpis přeloženého kódu...
Mám na mysli samotné instrukce - některé se dají dát dokupy, ale mnohé jsou zanesené, nebo vůbec neexistují...
Já vím - píši to... Ptám se, zda by nebyl takovýto editor co by to ještě překládal do JSA... Navíc jak jsem psal - jako strojový kód to vůbec nevypadá - jelikož ten ani spoustu z těch znaků neobsahuje...
Však JSA bych právě chtěl - neumím moc ve strojovém kódu - ale JSA... :) Assembler právě, že neznám. Vždyť HEX editory mají ukazovat stroják - ne? No a převést strojový kód do JSA přeci není tak složité... Assemblery jen přidávají pár vlastních věciček pro ulehčení práce. O co mi GO? Studuji který vyšší jazyk je nejmenší prase, jak staví kompiler atd...
Dobrý den,
vůbec nechápu ty editory - jelikož to ani omylem nepřipomíná strojový kód. Sem tam narazím na čitelný kód - tedy nejen stringy atp., ale i vyloženě adresy - ovšem proložené spoustou nesmyslů. (Po dlouhém študování té změti v tom spatřím třeba cmp, jmp atp.) Tudíž jak se s tím dá vůbec pracovat? Tedy abych mohl číst a psát normální adresy... Navíc bych raději psal v JSA (jazyk symbolických adres), než přímo ve strojovém. Bylo by něco takového pro Unix systémy? (JSA HexEditor)
Děkuji.
Dobrý den,
co jiného může být lepším základem pro vlastní XWindowManager, než TinyWM... :) (50 řádků kódu...) V C to jede:
https://github.com/…ter/tinywm.c
Ale přepis do D:
import std.c.linux.X11.Xlib;
import std.c.linux.X11.X;
// gdc ./main.d /usr/include/d2/4.6/std/c/linux/X11/Xlib.d -o refuja -lX11
int main()
{
Display *display0 = XOpenDisplay(cast(char*)0);
XWindowAttributes winAttributes;
XButtonEvent start;
XEvent xEvent;
if(!display0)
return 1;
XGrabKey(display0, XKeysymToKeycode(display0, XStringToKeysym(cast(char*)"F1")), KeyMask.Mod1Mask, DefaultRootWindow(display0), cast(Bool)true, GrabMode.GrabModeAsync, GrabMode.GrabModeAsync);
XGrabButton(display0, 1, KeyMask.Mod1Mask, DefaultRootWindow(display0), cast(Bool)true, EventMask.ButtonPressMask | EventMask.ButtonReleaseMask | EventMask.PointerMotionMask, GrabMode.GrabModeAsync, GrabMode.GrabModeAsync, None, None);
XGrabButton(display0, 3, KeyMask.Mod1Mask, DefaultRootWindow(display0), cast(Bool)true, EventMask.ButtonPressMask | EventMask.ButtonReleaseMask | EventMask.PointerMotionMask, GrabMode.GrabModeAsync, GrabMode.GrabModeAsync, None, None);
start.subwindow = None;
while(true)
{
XNextEvent(display0, &xEvent);
if(xEvent.type == EventType.KeyPress && xEvent.xkey.subwindow != None)
XRaiseWindow(display0, xEvent.xkey.subwindow);
else if(xEvent.type == EventType.ButtonPress && xEvent.xbutton.subwindow != None)
{
XGetWindowAttributes(display0, xEvent.xbutton.subwindow, &winAttributes);
start = xEvent.xbutton;
}
else if(xEvent.type == EventType.MotionNotify && start.subwindow != None)
{
int xdiff = xEvent.xbutton.x_root - start.x_root,
ydiff = xEvent.xbutton.y_root - start.y_root;
XMoveResizeWindow(display0, start.subwindow,
winAttributes.x + (start.button==1 ? xdiff : 0),
winAttributes.y + (start.button==1 ? ydiff : 0),
Max(1, winAttributes.width + (start.button == 3 ? xdiff : 0)),
Max(1, winAttributes.height + (start.button == 3 ? ydiff : 0)));
}
else if(xEvent.type == EventType.ButtonRelease)
start.subwindow = None;
}
}
int Max(int a, int b)
{
return (a > b ? a : b);
}
Jen problikne a konec. Smím vědět proč? :)
Děkuji.