Wednesday, July 16, 2008

சிறிய‌ அள‌விளான‌ க‌ண‌ணி நிர‌ல்

சிறிய‌ அள‌விளான‌ க‌ண‌ணி நிர‌ல்
(how to create small binary executable without the compiler)

க‌ண‌ணி நிர‌ல்க‌ள் C, C++ அல்ல‌து PASCAL மொழிக‌ளின் மூல‌ம் உருவாக்கிட‌ அத‌ற்கென‌ க‌ம்பைல‌ர்க‌ள் தேவை VC++ ம‌ற்றும் DELPHI போன்ற‌ நிர‌லாக்கிக‌ள் இத‌ற்கென‌ ப‌ய‌ன் ப‌டுத்த‌ப்ப‌டுகின்ற‌ன‌. நிர‌லாக‌த்தின்போது நாம் எழுதிய‌ உய‌ர்நிலை மொழி நிர‌ல்க‌ள் இய‌க்க‌த்த‌க்க‌ வ‌கையிலான‌ பைன‌ரி நிர‌ல்க‌ளாக‌ மாற்ற‌ப்ப‌டும். அதைத்தான் நாம் இய‌க்கிப்பார்க்க‌முடியும்.

உதார‌ண‌த்துக்கு C++ மொழியில் உருவாக்க‌ப்ப‌ட்ட‌ myprogram.cpp என்ற‌ நிர‌ல்‍பைலான‌து myprogram.exe என்ற‌ பைன‌ரி பைலாக‌ உருவாக்க‌ப்ப‌டும். myprogram.exe பைலை நாம் இய‌க்கிப்பார்க்க‌லாம்.

மிகச்சிரிய‌ அள‌வினாலான‌ பைன‌ரி நிராலை எப்ப‌டி எளிதாக‌ உருவாக்குவ‌து என்று பார்ப்போம்.

அசெம்பிளி மொழியில் உருவாக்க‌ப்ப‌டும் நிர‌க‌ளின் அள‌வு சிறிய‌தாக‌வே இருக்கும். வின்டோஸ் இய‌க்க‌த்தினுட‌ன் வ‌ரும் DEBUG.EXE என்ற‌ நிர‌லாக்க‌த்தின் மூல‌ம் எப்ப‌டி ஒரு 23 பைட் அள‌விலான‌ பைன‌ரி இய‌க்க‌ நிர‌லை உருவாக்க‌லாம் என்று பார்ப்போம்.

Start->Run மூல‌ம் Run வின்டோவிற்கு வ‌ந்து CMD என்று டைப் செய்து டாஸ் வின்டோவுக்கு வ‌ர‌வும்.


debug என்று டைப்செய்ய‌வும் கீழ்க‌ன்ட‌வாறு வ‌ரும்.

c:\>debug
-

பிற‌கு a100 என்று டைப்செய்ய‌வும் கீழ்க‌ன்ட‌வாறு வ‌ரும்

c:\>debug
-a100
0BA2:0100

பிற‌கு mov dx,10b என்று டைப் செய்ய‌வும், கீழ்க‌ன்ட‌வாறு வ‌ரும்

c:\>debug
-a100
0BA2:0100 mov dx,10b
0BA2:0103

பிற‌கு கீழ்க‌ன்ட‌வைக‌ளை வ‌ரிசையாக‌ டைப் செய்ய‌வும்
c:\>debug
-a100
0BA2:0100 mov dx,10b
0BA2:0103 mov ah,9
0BA2:0105 int 21
0BA2:0107 mov ah,4c
0BA2:0109 int 21
0BA2:010B db "hello world$"
0BA2:0117

db "hello world$" க்குஅடுத்து என்டர் கீ அழுத்திய‌ பின் xxx:0117 ல் வெறுமென‌ இன்னொரு என்ட‌ர் கீ அழுத்த‌வும்.

c:\>debug
-a100
0BA2:0100 mov dx,10b
0BA2:0103 mov ah,9
0BA2:0105 int 21
0BA2:0107 mov ah,4c
0BA2:0109 int 21
0BA2:010B db "hello world$"
0BA2:0117
-

அடுத்து rcx என்று டைப் செய்ய‌வும்.

c:\>debug
-a100
0BA2:0100 mov dx,10b
0BA2:0103 mov ah,9
0BA2:0105 int 21
0BA2:0107 mov ah,4c
0BA2:0109 int 21
0BA2:010B db "hello world$"
0BA2:0117
-rcx
cx 0000
:

இங்கு 17 என்று டைப் செய்ய‌வும்

-rcx
cx 0000
:17

அடுத்து nc:\smallpgm.com என்று டைப் செய்ய‌வும்.

-rcx
CX 0000
:17
-nc:\smallpgm.com

அடுத்து w என்று டைப் செய்ய‌வும்.கீழ்க‌ன்ட‌வாறு வ‌ரும்

-rcx
CX 0000
:17
-nc:\smallpgm.com
-w
Writing 00017 bytes
-

அடுத்து q என்று டைப் செய்ய‌வும்.

dibug லிருந்து வெளி வ‌ந்திட‌லாம். DIR c:\*.com எ என்று க‌ட்ட‌ளை கொடுத்தால் 23 பைட் அள‌விலான‌ நிர‌ல் உருகி இருப்ப‌தை பார்க்க‌லாம்.


அதை இய‌க்க‌ c:\smallpgm என்று க‌ட்ட‌ளை கொடுத்தால் அது இய‌ங்க‌ப்பெற்று "hello world" திரையில் வ‌ருவ‌தைக்கான‌லாம்.

விள‌க்க‌ம்

DOS க‌ட்ட‌ளை 21 ம‌ற்றும் ச‌ர்வீஸ் 9 ஆன‌து எழுத்து வ‌ரிக‌ளை திரையில் கான்பிக்க‌ ப‌ய‌ன் ப‌டுகிற‌து.

0BA2:0100 mov dx,10b - dx எழுத்து வ‌ரியின் முக‌வ‌ரி (கீழே பாருங்க‌ள் 010B என்ற‌ முக‌வரியில் "hello worல்ட்$" இருப்ப‌தைக்கான‌லாம்.)
0BA2:0103 mov ah,9 - ah ச‌ர்வீஸ்
0BA2:0105 int 21 - dos க‌ட்ட‌ளை

DOS க‌ட்ட‌ளை 21 ம‌ற்றும் ச‌ர்வீஸ் 4c ஆன‌து நிர‌லை முடிக்க‌ ப‌ய‌ன் ப‌டுகிற‌து.

0BA2:0107 mov ah,4c -
0BA2:0109 int 21
0BA2:010B db "hello world$"


rcx
எத்த‌னை பைட்க‌ள் பைன‌ரி பைலில் எழுத‌ப்போகின்றோம் என்று சொல்லுகிறோம். நாம் 17 என்று கொடுத்தோம் 17 என்ற‌ hex எண்ணின் த‌ச‌ம‌ ம‌திப்பு 23 ஆகும். அதாவ‌து 23 பைக‌ள் எழுத‌ப்போகிறோம் என்று சொல்லியிருக்கின்றோம்.

nc:\smallpgm
பைன‌ரி பைல் c:\smaalpgm என்ற‌ இட‌த்தில் இருக்கும‌டியாக்க‌ சொல்லுகிறோம்.


w
பைன‌ரி பைலை எழுத‌ச்சொல்லுகிறோம்

ச‌ந்தேக‌ங்க‌ளை கேட்க‌வும் ம‌கிழ்வுட‌ன் காத்திருக்கின்றேன் க‌ளைய‌

No comments: