৮১

Re: প্রোগ্রামারদের আড্ডা!

hookID হচ্ছে আপনার SetWindowsHookEx থেকে পাওয়া একটি হ্যান্ডল মাত্র - এটা তেমন দরকারী কিছু না।

আপনার আউটপুট থেকে বোঝা যাচ্ছে lParam.vkCode বদলাতে হবে।

ঊপরের কোডে wParam-এর জায়গায় lParam.vkCode চেঞ্জ করে CallNextHookEx()-এ পাস করুন। কাজ হবে। বিজয়/অভ্র এই পদ্ধতিতেই কাজ করে।

Calm... like a bomb.

৮২

Re: প্রোগ্রামারদের আড্ডা!

আমারও সেটাই মনে হয়েছিল
vkCode চেঞ্জ করে কিছু হল না।
এখানে দেখলাম কীবোর্ড হুকের প্যারামিটার গুলো নাকি রিডঅনলি। thinking

যাই হোক আমার কাজটা মনে হয় হয়েছে। কারেন্ট ইভেন্ট কিল করে নতুন ইভেন্ট করার মাধ্যমে। দেখি এবার আসল কাজ হয় কিনা...(গেমিংএ এক কী তে মাল্টিপল কীস্ট্রোক এসাইন করা)।

৮৩

Re: প্রোগ্রামারদের আড্ডা!

আমার ডেটাবেসে একটি ট্রি আছে। ট্রি টা একটু স্পেশালাইজড। মানে এর চাইল্ড গুলোর পজিশন ঠিক থাকতে হয়। অনেকটা বাইনারী ট্রি এর মত। লেফট, মিডল, রাইট এগুলো বলা আছে ডেটাবেসে। স্ট্রাকচার এরকমঃ

------------------------------------------------------
---- node ----  parent  ---- position_in_parent ------
------------------------------------------------------
----  0   ----    x     ----      x               ----
----  1   ----    0     ----      left            ----
----  1   ----    0     ----      right           ----
----  1   ----    0     ----      middle          ----

এখন কথা হলো এটা পিএইচপি তে ভিজ্যুয়ালাইজ করব কীভাবে? গ্রাফিক্স ইউজ করা গেলে ভালো হত। ডিভ টিভ দিয়ে কিছু করা যাবে নাকি? কারো কোন আইডিয়া আছে?

৮৪

Re: প্রোগ্রামারদের আড্ডা!

টপিকটি মরে গেল নাকি! worried

এখন সি# শিখছি। wink

লেখাটি CC by-nc-sa 3.0 এর অধীনে প্রকাশিত

৮৫

Re: প্রোগ্রামারদের আড্ডা!

পাইথন শিখছি। "Learn Python the Hard" বইটির অধ্যায় ২৪ পর্যন্ত হয়ে গেছে। আর কিউবি কানেকশন নিয়েছি MIT OCW দেখার জন্য। দ্বিতীয় লেকচারটি দেখা হলো। প্রোগ্রামিং কনসেপ্ট ডেভলাপ করছে। yahoo

কত কি শিখতে ইচ্ছা করে। এখনও শেখা হলো না কিছুই।

লেখাটি CC by-sa 3.0 এর অধীনে প্রকাশিত

৮৬ সর্বশেষ সম্পাদনা করেছেন প্রিন্স১১ (২৯-১১-২০১১ ০১:৪৮)

Re: প্রোগ্রামারদের আড্ডা!

পাইথন শিখছি। "Learn Python the Hard" বইটির অধ্যায় ২৪ পর্যন্ত হয়ে গেছে। আর কিউবি কানেকশন নিয়েছি MIT OCW দেখার জন্য। দ্বিতীয় লেকচারটি দেখা হলো। প্রোগ্রামিং কনসেপ্ট ডেভলাপ করছে। yahoo

আপনি কি একাই বইটির সাহায্য নিয়ে শিখছেন..?।MIT OCW এই সম্বন্ধে কিছু বলবেন কি...?।আর বইটি কই পাওয়া যাবে..?

৮৭

Re: প্রোগ্রামারদের আড্ডা!

বইটি জেড এ, শয়ের লেখা এবং বিনামূল্যে অনলাইনেই বইটি পড়তে পারবে। বিস্তারিত তথ্যের জন্য ভিজিট কর http://learnpythonthehardway.org/। পাইথন শিখতে আগ্রহী হলে http://hukush-pakush.appspot.com/ – ও পছন্দ হবে। আর MIT OpenCourseWare সম্পর্কিত একটি টপিক সম্ভবত ফোরামেই আছে। একটু ঘাঁটলেই পেয়ে যাবে।

লেখাটি CC by-nc-sa 3.0 এর অধীনে প্রকাশিত

৮৮

Re: প্রোগ্রামারদের আড্ডা!

প্রোগ্রামিং কনসেপ্ট ডেভেলপ করার জন্য মনে হয় Code Kata করা জরুরী। কিছুদিন যাবৎ এটা নিয়ে নাড়া করেছিলাম।

নিচে লিংক দিলাম দুটো।
কেন Code Kata?
Code Kata ব্যাগ্রাউন্ড

এছাড়া গুগলেও অসংখ্য আর্টিকেল আছে এই বিষয়ক। দরকার শুধু সার্চের।

Feed থেকে ফোরাম সিগনেচার, imgsign.com
ব্লগ: shiplu.mokadd.im
মুখে তুলে কেউ খাইয়ে দেবে না। নিজের হাতেই সেটা করতে হবে।

শিপলু'এর ওয়েবসাইট

লেখাটি GPL v3 এর অধীনে প্রকাশিত

৮৯ সর্বশেষ সম্পাদনা করেছেন cslraju (২৯-১১-২০১১ ১৩:০৫)

Re: প্রোগ্রামারদের আড্ডা!

আপনি কি একাই বইটির সাহায্য নিয়ে শিখছেন..?।MIT OCW এই সম্বন্ধে কিছু বলবেন কি...?।আর বইটি কই পাওয়া যাবে..?

হ্যাঁ, একাই শিখছি। অয়ন ভাই তো বইটির কথা বলেই দিলেন। বইটি নিজে থেকে শেখার অনুপ্রেরণা দেয়। আমারও এটা পছন্দ (অফিস করে এর বেশি কিই বা করার আছে)। আর MIT OCW এর লেকচার লিঙ্ক হলো:
http://ocw.mit.edu/courses/electrical-e … -lectures/

এখান থেকে পুরো কোর্সটাই ডালো দেওয়া যাবে। তবে ভিডিও লেকচারগুলো এক-একটা ২০০এমবি'র মতো - FLV। itunes - এর ফাইলগুলো ছোট হলেও কেন জানি ডালো দিতে পারি নি। ভালো লেগেছে  এ্যাসাইনমেন্টগুলো। আসলে এক কথায় জিনিসটা অসাধারণ। পাইথন প্রোগ্রামিং শেখালেও মূলত প্রোগ্রামিং কনসেপ্ট এর প্রতি নজর দেওয়া হয়েছে। বইগুলোতে যা পাওয়া যায় নি (আমি পাই নি অন্তত)। এই তো..

কত কি শিখতে ইচ্ছা করে। এখনও শেখা হলো না কিছুই।

লেখাটি CC by-sa 3.0 এর অধীনে প্রকাশিত

৯০

Re: প্রোগ্রামারদের আড্ডা!

কোন প্যাসকেল এসেম্বেলারের নাম কি কেউ জাননে?
মানে যেটা প্যাসকেল সোর্স থেকে আনঅপটিমাইজড এসেম্বেলী কোড জেনারেট করবে x16 বা x32 একটা হলেই হল।
ফ্রীওয়ার বা কমার্শীয়াল।

৯১

Re: প্রোগ্রামারদের আড্ডা!

প্যাসকেল নিয়ে তেমন ধারণা নেই। মোটামুটি কমন সেন্স থেকে বলছি।
প্যাসকেল থেকে বাইনারি করে সেটাকে ডিসএসেম্বল করার ট্রাই করে দেখতে পারেন।
যে কোন প্যাসকেল ডিবাগারের এই কাজ করতে পারার কথা।

তবে একটা ব্যাপার। মেশিন ভেদে এসেম্বলি কোড ডিফারেন্ট হবে।  এসেম্বলি সবসময়ই সম্পুর্ণ মেশি ডিপেনডেন্ট। স্পেশ্যালি প্রসেসরের উপর ডিপেন্ড করে।

Feed থেকে ফোরাম সিগনেচার, imgsign.com
ব্লগ: shiplu.mokadd.im
মুখে তুলে কেউ খাইয়ে দেবে না। নিজের হাতেই সেটা করতে হবে।

শিপলু'এর ওয়েবসাইট

লেখাটি GPL v3 এর অধীনে প্রকাশিত

৯২

Re: প্রোগ্রামারদের আড্ডা!

আচ্ছা, ৬ ক্যারেক্টারের হেক্স কালার কোডকে ৩ ক্যারেক্টারে রূপান্তর করার কোন ওয়েবসাইট কারও জানা আছে কী? waiting

লেখাটি CC by-nc-sa 3.0 এর অধীনে প্রকাশিত

৯৩

Re: প্রোগ্রামারদের আড্ডা!

সদস্য_১ লিখেছেন:

কোন প্যাসকেল এসেম্বেলারের নাম কি কেউ জাননে?
মানে যেটা প্যাসকেল সোর্স থেকে আনঅপটিমাইজড এসেম্বেলী কোড জেনারেট করবে x16 বা x32 একটা হলেই হল।
ফ্রীওয়ার বা কমার্শীয়াল।

বহু বছর ডেলফী ব্যবহার করেছিলাম - তবে তাও কয়েক বছর আগের কথা। যতদূর মনে পড়ে Turbo Pascal-এর কমান্ড লাইন কম্পাইলার/লিংকারে ওবজেক্ট ফাইল থেকে সরাসরি TASM কোড জেনারেট করা যেত। TP এখন ফ্রী ডাউনলোড - ট্রাই করে দেখতে পারেন। এছাড়া ডেলফীর কমপাইলারও ট্রাই করতে পারেন...

এটা দেখুন:
http://www.micro-examples.com/public/mi … lator.html

এছাড়া, IDA, softice ইত্যাদি ৩র্ড পার্টি ডিবাগার দিয়েও বাইনারী এক্সিকিউটেবলের এ্যাসেম্বলী কোড দেখতে পারেন।

তবে উপরের পদ্ধতিগুলো একটু ঝামেলার - ডেলফী/ফ্রীপাস্কালের RTL-এ এমনিতেই প্রচুর কোড থাকে - আপনার নিজস্ব কোড ওগুলোর মধ্যে ইনলাইনিং হয়ে যেতে পারে।

শিপলু ভাই এর সাথে সহমত। সবচাইতে সহজ উপায় হলো প্যাস্কালের ডিবাগার ব্যবহার করা। ডেলফী (বা ফ্রীপ্যাস্কাল/ল্যাযারাস) আইডিইতে আপনার সোর্স কোড লোড করুন। প্রযেক্ট অপশনস-এ গিয়ে Compiler > Code Generation > Optimization সেটিং ডিজেবল করুন। এরপর যে প্রসিডিউর/ফাংশনটির এ্যাসেম্বলী কোড বের করতে চান সেখানে ব্রেকপয়েন্ট (F5) সেট করুন। প্রোগ্রামটি ডিবাগ মোডে রান করুন। ব্রেকপয়েন্ট হিট করলে এবার View > Debug windows > CPU উইন্ডোটি (Ctrl+Alt+C) ওপেন করুন - এখানেই আপনার এ্যাসেম্বলী অপকোড, রেজিস্টার ইত্যাদি দেখতে পাবেন:
http://i.imgur.com/1uT5U.png

Calm... like a bomb.

৯৪

Re: প্রোগ্রামারদের আড্ডা!

ধন্যবাদ শিপলু এবং ইনভারব্রাস ভাই।
IDA দিয়ে এক্সিকিউটেবলের এ্যাসেম্বলী কোড দেখার চেষ্টা আগেই করেছি। লক্ষ লাইন কোড জেনারেট করে... এই জন্যই আপনাদের জিজ্ঞাসা করলাম অন্য পদ্ধতির জন্য।

View > Debug windows > CPU উইন্ডোটি (Ctrl+Alt+C) ওপেন করুন - এখানেই আপনার এ্যাসেম্বলী অপকোড, রেজিস্টার ইত্যাদি দেখতে পাবেন:

আমার ফ্রীপ্যাস্কাল v1.0.12 আইডিইতে View মেনু নাই।  sad
ল্যাযারাস ডাউনলোড করলাম: View > Debug windows > তে CPU  নাই। আছে Watches, BreakPoints, Local Variables, Registers,Call Stack, Assembler, Event Log, Debug output।

যাই হোক, ফ্রীপ্যাস্কাল এর Options>compiler>Assembler>Assembler Info> List Source আন চেক করা ছিল। এটা চেক করার পর এসেম্বেলি ফাইল জেনারেটা করেছে। ফাইলের সাইজ মোটামুটি ধরাছোয়ার মধ্যে যদিও প্রোগ্রাম এবং মেইন প্রসিডিওরেরর সাবরুটিনের শুরুটা অনেকটা অন্যরকম। যেমন "TITLE" "main PROC" ইত্যাদি পেলাম না।

৯৫

Re: প্রোগ্রামারদের আড্ডা!

সদস্য_১ লিখেছেন:

আমার ফ্রীপ্যাস্কাল v1.0.12 আইডিইতে View মেনু নাই।  sad
ল্যাযারাস ডাউনলোড করলাম: View > Debug windows > তে CPU  নাই। আছে Watches, BreakPoints, Local Variables, Registers,Call Stack, Assembler, Event Log, Debug output।

Ctrl+Alt+D, Ctrl+Alt+R

সদস্য_১ লিখেছেন:

যাই হোক, ফ্রীপ্যাস্কাল এর Options>compiler>Assembler>Assembler Info> List Source আন চেক করা ছিল। এটা চেক করার পর এসেম্বেলি ফাইল জেনারেটা করেছে। ফাইলের সাইজ মোটামুটি ধরাছোয়ার মধ্যে যদিও প্রোগ্রাম এবং মেইন প্রসিডিওরেরর সাবরুটিনের শুরুটা অনেকটা অন্যরকম। যেমন "TITLE" "main PROC" ইত্যাদি পেলাম না।

main PROC সম্ভবত: TASM/MASM সিন্ট্যাক্স। fpc বিভিন্ন সিন্ট্যাক্সে আউটপুট করতে পারে:

  -A<x>  Output format:
      -Adefault  Use default assembler
      -Aas       Assemble using GNU AS
      -Anasmcoff COFF (Go32v2) file using Nasm
      -Anasmelf  ELF32 (Linux) file using Nasm
      -Anasmwin32Win32 object file using Nasm
      -AnasmwdosxWin32/WDOSX object file using Nasm
      -Awasm     Obj file using Wasm (Watcom)
      -Anasmobj  Obj file using Nasm
      -Amasm     Obj file using Masm (Microsoft)
      -Atasm     Obj file using Tasm (Borland)
      -Acoff     COFF (Go32v2) using internal writer

আপনি কি এ্যাসেম্বলার ব্যবহার করছেন জানি না, তবে ফ্রী কম্পাইলারগুলোর মধ্যে NASM সম্ভবত: সবচাইতে জনপ্রিয়।
আরেকটা চমৎকার অপশন: http://www.openwatcom.org/index.php/Wasm
এ দু'টো কম্পাইলারই MASM ডায়ালেক্ট সাপোর্ট করে।

Calm... like a bomb.

৯৬

Re: প্রোগ্রামারদের আড্ডা!

অয়ন খান লিখেছেন:

আচ্ছা, ৬ ক্যারেক্টারের হেক্স কালার কোডকে ৩ ক্যারেক্টারে রূপান্তর করার কোন ওয়েবসাইট কারও জানা আছে কী?

না এরকম কোন পদ্ধতি নাই। নিজে প্রোগ্রামিং করে দেখতে পার।

আর আমি প্র্যাকটিস হিসেবে এই কাজটা করলাম আজকে। ব্লগপোস্ট দেখতে পার।
নিচে কোড দেখ।

<?php
function convert_color($color){
preg_match("|#([\da-h]{2})([\da-h]{2})([\da-h]{2})|", $color, $match);
$n=array();
array_shift($match);
foreach($match as $m)
    array_push($n, reduce_digit($m));
return "#". implode("", $n);
}

function reduce_digit($hex){
    $n = hexdec($hex);
    $r = $n%17 ;
    $d = intval($n/17)+ (($r<8)?0:1);
    return dechex($d);
}
?>

টেস্ট করার জন্য কোড এখানে। আর এটা টেস্ট আউটপুট

Feed থেকে ফোরাম সিগনেচার, imgsign.com
ব্লগ: shiplu.mokadd.im
মুখে তুলে কেউ খাইয়ে দেবে না। নিজের হাতেই সেটা করতে হবে।

শিপলু'এর ওয়েবসাইট

লেখাটি GPL v3 এর অধীনে প্রকাশিত

৯৭

Re: প্রোগ্রামারদের আড্ডা!

সি/সি++ এর কোড করার জন্য উইন্ডোজ প্লাটফর্মে সবচেয়ে ভাল আইডিই কোনটি? আমার মূলত ডিবাগিং সুবিধা দরকার। তবে সাধারণ কোড করার জন্য প্রজেক্ট খুলে ডিবাগ করতে পারতপক্ষে পছন্দ করিনা। sad
তাই প্রজেক্ট না খুলেই ডিবাগ করা যায় এ ধরনের আইডিই হলে ভাল হয়।

লেখাটি by 3.0 এর অধীনে প্রকাশিত

৯৮ সর্বশেষ সম্পাদনা করেছেন সদস্য_১ (০২-১২-২০১১ ২১:৫৩)

Re: প্রোগ্রামারদের আড্ডা!

সাম্যবাদী লিখেছেন:

সি/সি++ এর কোড করার জন্য উইন্ডোজ প্লাটফর্মে সবচেয়ে ভাল আইডিই কোনটি? আমার মূলত ডিবাগিং সুবিধা দরকার। তবে সাধারণ কোড করার জন্য প্রজেক্ট খুলে ডিবাগ করতে পারতপক্ষে পছন্দ করিনা। sad
তাই প্রজেক্ট না খুলেই ডিবাগ করা যায় এ ধরনের আইডিই হলে ভাল হয়।

আইডিই ভাল লাগা না লাগা অনেকটা ব্যাক্তিগত... আমার কাছে কোড ব্লকস্ এবং ভিজুয়াল স্টুডিও ভাল লাগে।
সি++ অবজেক্ট ওরিএন্টেড ল্যাঙ্গুয়েজ। ছোট খাট প্রোগামেই অনেক রেফারেন্স থাকে। তাই প্রজেক্ট না খুলে একটা সিঙ্গেল ফাইল ডিবাগ করতে না পারারই কথা।

invarbrass লিখেছেন:

main PROC সম্ভবত: TASM/MASM সিন্ট্যাক্স। fpc বিভিন্ন সিন্ট্যাক্সে আউটপুট করতে পারে:

তা ঠিক। কিন্তু রাত আর দিন পার্থক্য হলে তো সমস্য...
TASM/MASM/NASM তিনটাই ব্যাবহার করেছি। তবে সিন্টাক্সে খুব একটা পার্থক্য দেখিনি। MASM কিছু লাইব্রেরী প্রসিডিওর ব্যবহার করার সুবিধা আছে এই যা...
কিন্তু ফ্রী প্যাসকেল যেটা জেনারেট করেছে সেটা একদম অন্যরকম... ল্যাযারাস বা আইডিএ এর চেয়ে আরো জঘন্য
একটা উদাহরন দেই। নিচের প্যাসকেল প্রোগ্রামটার কথা ধরা যাক

PROGRAM NUMBER(OUTPUT);
VAR
    alpha, beta : INTEGER;
    result : REAL;
BEGIN
    alpha := 22;
    beta := alpha +8;
    result := alpha + 3 * (beta - alpha);
    WRITELN('Value of Result: ',result);
END.

আমি নিজে এসেম্বেলী করলে এই প্রোগ্রামনটা নিচের মত করে করতে পারি (MASM) । আমি সংক্ষেপে করিনি। স্টেপ বাই স্টেপ আনঅপটিমইজড রেখেছি। তবুও মাত্র ২২ লাইন কোড। WriteInt ফাংশন ব্যাবহার করতে না চাইলে int 21h কল করা যায় TASM এর ক্ষেত্রে।

TITLE number(number.asm)

INCLUDE Irvine32.inc

.data
alpha dword ?
beta dword ?
result real4 ?

.code
main PROC

    mov alpha, 22
    
    mov eax, alpha
    add eax, 8
    mov beta, eax
    
    sub eax, alpha
    mov ebx, 3
    mul ebx
    
    add alpha, eax
    mov eax, alpha
    mov result, eax
    
    call WriteInt
    
    exit
main ENDP
END main

কিন্তু ফ্রী প্যাসকেল যেটা জেনারেট করল সেটা এরকম। মোটমুটি ২০০ লাইন কোড কমেন্ট বাদ দিলেও। তারউপার সিন্টক্সও ভুতুরে....

    .file "np.pas"
# Begin asmlist al_begin

.section .text.b_DEBUGSTART_P$NUMBER
.globl    DEBUGSTART_P$NUMBER
DEBUGSTART_P$NUMBER:
    .stabs "C:/FPC/2.4.4/bin/i386-win32/",100,0,0,.Lf2
    .stabs "c:/fpc/2.4.4/bin/i386-win32/myfiles/np.pas",100,0,0,.Lf2
.Lf2:
# End asmlist al_begin
# Begin asmlist al_stabs

.section .data.n_NUMBER
.globl    DEBUGINFO_P$NUMBER
DEBUGINFO_P$NUMBER:
# Defs - Begin unit SYSTEM has index 1
    .stabs "void:t2=2",128,0,0,0
    .stabs "SMALLINT:t1=r1;-32768;32767;",128,0,0,0
# Defs - End unit SYSTEM has index 1
# Defs - Begin unit FPINTRES has index 2
# Defs - End unit FPINTRES has index 2
# Defs - Begin unit SYSINITPAS has index 3
# Defs - End unit SYSINITPAS has index 3
# Defs - Begin Staticsymtable
# Defs - End Staticsymtable
# Syms - Begin Staticsymtable
    .stabs "ALPHA:S1",40,0,3,U_P$NUMBER_ALPHA
    .stabs "BETA:S1",40,0,3,U_P$NUMBER_BETA
# Syms - End Staticsymtable
# End asmlist al_stabs
# Begin asmlist al_procedures

.section .text.n__main
    .balign 16,0x90
.globl    PASCALMAIN
PASCALMAIN:
.globl    _main
_main:
    .stabs "main:F2",36,0,2,_main
# Temps allocated between ebp-4 and ebp+0
    .stabs "c:/fpc/2.4.4/bin/i386-win32/myfiles/np.pas",132,0,0,.Lf1
.Lf1:
    .stabn 68,0,4,.Ll1 - _main
.Ll1:
# [np.pas]
# [4] BEGIN
    pushl    %ebp
    movl    %esp,%ebp
    subl    $4,%esp
    movl    %ebx,-4(%ebp)
    call    FPC_INITIALIZEUNITS
    .stabn 68,0,5,.Ll2 - _main
.Ll2:
# [5] alpha := 22;
    movw    $22,U_P$NUMBER_ALPHA
    .stabn 68,0,6,.Ll3 - _main
.Ll3:
# [6] beta := alpha +8;
    movswl    U_P$NUMBER_ALPHA,%edx
    addl    $8,%edx
    jno    .Lj7
    call    FPC_OVERFLOW
.Lj7:
    movl    %edx,%eax
    subl    $-32768,%eax
    cmpl    $65535,%eax
    jbe    .Lj8
    call    FPC_RANGEERROR
.Lj8:
    movw    %dx,U_P$NUMBER_BETA
    .stabn 68,0,7,.Ll4 - _main
.Ll4:
# [7] WRITELN('Value of beta: ',beta);
    call    fpc_get_output
    movl    %eax,%ebx
    movl    %ebx,%edx
    movl    $_$NUMBER$_Ld1,%ecx
    movl    $0,%eax
    call    fpc_write_text_shortstr
    call    FPC_IOCHECK
    movswl    U_P$NUMBER_BETA,%ecx
    movl    %ebx,%edx
    movl    $0,%eax
    call    fpc_write_text_sint
    call    FPC_IOCHECK
    movl    %ebx,%eax
    call    fpc_writeln_end
    call    FPC_IOCHECK
    .stabn 68,0,8,.Ll5 - _main
.Ll5:
# [8] END.
    call    FPC_DO_EXIT
    movl    -4(%ebp),%ebx
    leave
    ret
    .stabn 192,0,0,_main-_main
    .stabn 224,0,0,.Lt1-_main
.Lt1:

.section .fpc.n_links
    .long    DEBUGINFO_P$NUMBER
    .long    DEBUGSTART_P$NUMBER
    .long    DEBUGEND_P$NUMBER
# End asmlist al_procedures
# Begin asmlist al_globals

.section .bss
    .balign 2
# [3] alpha, beta : INTEGER;
    .globl U_P$NUMBER_ALPHA
U_P$NUMBER_ALPHA:
    .zero 2

.section .bss
    .balign 2
    .globl U_P$NUMBER_BETA
U_P$NUMBER_BETA:
    .zero 2

.section .data.n_THREADVARLIST_P$NUMBER
    .balign 4
.globl    THREADVARLIST_P$NUMBER
THREADVARLIST_P$NUMBER:
    .long    0

.section .data.n_INITFINAL
    .balign 4
.globl    INITFINAL
INITFINAL:
    .long    2,0
    .long    INIT$_SYSTEM
    .long    0
    .long    INIT$_FPINTRES
    .long    0

.section .data.n_FPC_THREADVARTABLES
    .balign 4
.globl    FPC_THREADVARTABLES
FPC_THREADVARTABLES:
    .long    4
    .long    THREADVARLIST_SYSTEM
    .long    THREADVARLIST_FPINTRES
    .long    THREADVARLIST_SYSINITPAS
    .long    THREADVARLIST_P$NUMBER

.section .data.n_FPC_RESOURCESTRINGTABLES
    .balign 4
.globl    FPC_RESOURCESTRINGTABLES
FPC_RESOURCESTRINGTABLES:
    .long    0

.section .fpc.n_version
    .balign 16
    .ascii    "FPC 2.4.4 [2011/04/23] for i386 - Win32"

.section .data.n___heapsize
    .balign 4
.globl    __heapsize
__heapsize:
    .long    0

.section .data.n___fpc_valgrind
.globl    __fpc_valgrind
__fpc_valgrind:
    .byte    0
# End asmlist al_globals
# Begin asmlist al_const
# End asmlist al_const
# Begin asmlist al_typedconsts

.section .rodata.n__$NUMBER$_Ld1
    .balign 4
.globl    _$NUMBER$_Ld1
_$NUMBER$_Ld1:
    .ascii    "\017Value of beta: \000"
# End asmlist al_typedconsts
# Begin asmlist al_rotypedconsts
# End asmlist al_rotypedconsts
# Begin asmlist al_threadvars
# End asmlist al_threadvars
# Begin asmlist al_imports
# End asmlist al_imports
# Begin asmlist al_exports
# End asmlist al_exports
# Begin asmlist al_resources
# End asmlist al_resources
# Begin asmlist al_rtti
# End asmlist al_rtti
# Begin asmlist al_dwarf_frame
# End asmlist al_dwarf_frame
# Begin asmlist al_dwarf_info
# End asmlist al_dwarf_info
# Begin asmlist al_dwarf_abbrev
# End asmlist al_dwarf_abbrev
# Begin asmlist al_dwarf_line
# End asmlist al_dwarf_line
# Begin asmlist al_picdata
# End asmlist al_picdata
# Begin asmlist al_resourcestrings
# End asmlist al_resourcestrings
# Begin asmlist al_end

.section .text.z_DEBUGEND_P$NUMBER
.globl    DEBUGEND_P$NUMBER
DEBUGEND_P$NUMBER:
    .stabs "",100,0,0,.Lf3
.Lf3:
# End asmlist al_end

রাত আর দিন পার্থক্য। এমন কোন এসেম্বেলার আছে যেটা মোটামুটি আমারটার মতকরে কোড জেনারেট করবে?

৯৯

Re: প্রোগ্রামারদের আড্ডা!

ধন্যবাদ, শিপলু ভাই। আমি দেখছি।

লেখাটি CC by-nc-sa 3.0 এর অধীনে প্রকাশিত

১০০ সর্বশেষ সম্পাদনা করেছেন invarbrass (০২-১২-২০১১ ২৩:৩২)

Re: প্রোগ্রামারদের আড্ডা!

সদস্য_১ লিখেছেন:

কিন্তু ফ্রী প্যাসকেল যেটা জেনারেট করল সেটা এরকম। মোটমুটি ২০০ লাইন কোড কমেন্ট বাদ দিলেও। তারউপার সিন্টক্সও ভুতুরে....

ওটা গ্যাস ডায়ালেক্ট। FPC বাই ডিফল্ট গ্নু টুলচেইন ব্যবহার করে।

আপনার কোডটা FPC-তে ট্যাসম/ম্যাসম/ন্যাসম তিনটাই জেনারেট করলাম। এদের মধ্যে ম্যাসম ভার্সনটাই সবচাইতে ক্লীন মনে হলো (সংক্ষেপিত):

_CODE        SEGMENT    PARA PUBLIC USE32 'CODE'
    ALIGN 16
    PUBLIC    PASCALMAIN
PASCALMAIN:
    PUBLIC    _main
_main:
        push    ebp
        mov    ebp,esp
        sub    esp,8
        mov    dword ptr [ebp-8],ebx
        call    FPC_INITIALIZEUNITS
        mov    word ptr [U_P$NUMBER_ALPHA],22
        movsx    eax,word ptr [U_P$NUMBER_ALPHA]
        add    eax,8
        mov    word ptr [U_P$NUMBER_BETA],ax
        movsx    edx,word ptr [U_P$NUMBER_BETA]
        movsx    eax,word ptr [U_P$NUMBER_ALPHA]
        sub    edx,eax
        imul    edx,3
        movsx    eax,word ptr [U_P$NUMBER_ALPHA]
        add    edx,eax
        mov    dword ptr [ebp-4],edx
        fild    dword ptr [ebp-4]
        fstp    qword ptr [U_P$NUMBER_RESULT]
        call    fpc_get_output
        mov    ebx,eax
        mov    edx,ebx
        mov    ecx,offset _$NUMBER$_Ld1
        mov    eax,0
        call    fpc_write_text_shortstr
        call    FPC_IOCHECK
        push    ebx
        fld    qword ptr [U_P$NUMBER_RESULT]
        sub    esp,12
        fstp    tbyte ptr [esp]
        mov    ecx,-32767
        mov    edx,-1
        mov    eax,1
        call    fpc_write_text_float
        call    FPC_IOCHECK
        mov    eax,ebx
        call    fpc_writeln_end
        call    FPC_IOCHECK
        call    FPC_DO_EXIT
        mov    ebx,dword ptr [ebp-8]
        leave
        ret

কম্পাইলার ফ্ল্যাগ:

ppc386 -Amasm -O- test.pas

একই কোডের জন্য ডেলফী ৭ ডিবাগার:
http://i.imgur.com/LTRby.png
দেখতেই পাচ্ছেন, সব কম্পাইলারই আপনার কোডের মধ্যে বিভিন্ন বাউন্ডস চেকিং, ফ্লোটিং পয়েন্ট ভ্যালিডেশন, আই/ও চেকিং ইত্যাদি অনেক হাবিজাবি ঢুকিয়ে দেবে।

Calm... like a bomb.