बस एक बहुत छोटे टुकड़े डेल्फी 7 में कोड का।
{$APPTYPE CONSOLE}
program assembler;
uses sysutils;
const
s1=#0#77#1#90#59#64#4#80#1#69#3#76#1#1#1#1#14#224#2#15#1#1#1#11#1#1#1#1#1#64#13+
#116#1#16#13#64#3#16#4#2#3#1#8#3#2#10#7#32#4#2#7#3#5#16#4#16#5#1#10#16#13#16#3+
#184#124#184#5#16#3#184#5#2#15#96#3#224#173#52#1#16#3#40#1#16#23#65#1#16#3#80#1+
#16#7#75#1#69#1#82#1#78#1#69#1#76#1#51#1#50#1#46#1#68#1#76#1#76#4#71#1#101#1+
#116#1#83#1#116#1#100#1#72#1#97#1#110#1#100#1#108#1#101#4#87#1#114#1#105#1#116+
#1#101#1#67#1#111#1#110#1#115#1#111#1#108#1#101#1#65#2#72#1#101#1#108#1#108#1+
#111#1#44#1#32#1#87#1#111#1#114#1#108#1#100#1#33#1#13#1#10#5#0;
s3=#1#185#1#7#4#136#1#195#1#128#1#227#1#15#1#193#1#216#1#4#1#128#1#251#1#9+
#1#118#1#3#1#128#1#195#1#39#1#128#1#195#1#48#1#136#1#153#1#96#1#16#1#64#2#73#1+
#125#1#228#1#106#2#104#1#112#1#16#1#64#2#106#1#8#1#104#1#96#1#16#1#64#2#106#1+
#245#1#255#1#21#1#40#1#16#1#64#2#80#1#255#1#21#1#44#1#16#1#64#2#195;
var
f:file of byte;p,i:integer;o:string;
t:text;line:string;
procedure w(s: string);
begin
i:=1;
while i<length(s) do begin
inc(p,ord(s[i]));
setlength(o, p);
o[p]:=s[i+1];
inc(i,2);
end;
end;
procedure al(b: byte);
var
a: longword;pc: pchar;
begin
a := strtoint(line); pc:[email protected];
o := o + chr(b) + pc^ + (pc+1)^ + (pc+2)^ + (pc+3)^; inc(p,5); // mov eax, imm32
end;
begin
assign(f,'out.exe');
rewrite(f);
p:=1;
w(s1);
assignfile(t, ''); reset(t);
while not eof(t) do begin
readln(t, line); line := trim(line);
if copy(line,1,8) = 'mov eax,' then begin
system.delete(line,1,8);
al($b8); // mov eax, imm32
end
else if copy(line,1,8) = 'add eax,' then begin
system.delete(line,1,8);
al($05); // add eax, imm32
end
else if copy(line,1,8) = 'and eax,' then begin
system.delete(line,1,8);
al($25); // and eax, imm32
end
end;
closefile(t);
w(s3);
blockwrite(f,o[1],p); close(f);
end.
कोडांतरक केवल तीन अलग अलग कोडांतरक कोड "mov eax, immed32" समझता है, "eax जोड़ने के लिए, immed32", "और eax, immed32" और कोई डेटा है और न ही लेबल। यह एक छोटे से विंडोज पीई निष्पादन योग्य उत्पादन करेगा जो अंत में हेक्स में ईएक्स आउटपुट करता है।
ध्यान दें: मेरे मामले में एविरा मुक्त एंटीवायरस आउटपुट पसंद नहीं करता है। यह एक झूठी सकारात्मक है। मुझे वास्तविक समय की सुरक्षा बंद करनी पड़ी। यदि आप मैलवेयर हैं तो यह अनिश्चित है यदि यह मैलवेयर है (यह नहीं है!)
मैं सी – mudge
में असेंबलर को विकसित करना पसंद करूंगा http://stackoverflow.com/questions/1669/ में सूचीबद्ध कुछ संदर्भ सीखने के लिए लिखने-ए-कंपाइलर शायद इसे संकलन के चरण के रूप में संबोधित करते हैं (और कुछ शायद नहीं)। [[संबंधित, * नहीं * एक डुप्लिकेट।]] – dmckee
यह भी देखें कि "एक डिस्सेबलर कैसे लिखें?" http: // stackoverflow।कॉम/प्रश्न/9 24303/कैसे-टू-राइट-ए-डिससेबलर – claws