Top 1,000 Features Creators Events Podcasts Extensions Blog Explorer CSV Download

High Level Assembly

< >

High Level Assembly, aka High Level Assembly, is an open source assembly language created in 2011 by Randall Hyde.

#770on PLDB 13Years Old

High Level Assembly (HLA) is an high-level assembly language developed by Randall Hyde. It allows the use of higher-level language constructs to aid both beginners and advanced assembly developers. It fully supports advanced data types and object-oriented programming. Read more on Wikipedia...

Example from the web:
procedure SetFormat; static chr :w.CHARRANGE; chr2 :w.CHARRANGE; cf :w.CHARFORMAT; begin SetFormat; w.SendMessage(hwnd, w.EM_GETMODIFY,0,0); push (eax); w.SendMessage(hwnd, w.EM_EXGETSEL,0, &chr); w.SendMessage(hwnd, w.EM_HIDESELECTION, true,0); mov (0, chr2.cpMin); mov (-1,chr2.cpMax); w.SendMessage(hwnd, w.EM_EXSETSEL,0,&chr2); mov (@size(cf), cf.cbSize); mov (w.CFM_CHARSET | w.CFM_FACE | w.CFM_SIZE | w.CFM_COLOR, cf.dwMask); mov (logfont.lfCharSet, al); mov (al,cf.bCharSet); mov (logfont.lfPitchAndFamily, al); mov (al, cf.bPitchAndFamily); w.lstrcpyn(cf.szFaceName,&logfont.lfFaceName,w.LF_FACESIZE); mov (logfont.lfHeight, eax); neg (eax); mov (15,ecx); mul (ecx); mov (eax, cf.yHeight); mov (rgb, cf.crTextColor); w.SendMessage(hwnd, w.EM_SETCHARFORMAT, w.SCF_SELECTION,&cf); w.SendMessage(hREd, w.WM_SETFONT, hFont, true); w.SendMessage(hREd, w.EM_SETMARGINS, w.EC_LEFTMARGIN,5); pop (eax); w.SendMessage(hwnd, w.EM_SETMODIFY, eax,0); w.SendMessage(hwnd, w.EM_EXSETSEL,0,&chr); w.SendMessage(hwnd,w.EM_HIDESELECTION, false, 0); end SetFormat;

Language features

Feature Supported Token Example
// _SortCases_
//  This routine does a bubble sort on an array
// of _caseRecord_ objects.  It sorts in ascending
// order using the "value" field as the key.
// This is a good old fashioned bubble sort which
// turns out to be very efficient because:
//  (1) The list of cases is usually quite small, and
//  (2) The data is usually already sorted (or mostly sorted).

macro _SortCases_( ary, size ):i, bnd, didswap, temp;

    ?bnd := size - 1;
    ?didswap := true;
    #while( didswap )
        ?didswap := false;
        ?i := 0;
        #while( i < bnd )
            #if( ary[i].value > ary[i+1].value )
                ?temp := ary[i];
                ?ary[i] := ary[i+1];
                ?ary[i+1] := temp;
                ?didswap := true;
            ?i := i + 1;
        ?bnd := bnd - 1;
Line Comments
// comment

View source

- Build the next great programming language · About · Resources · Acknowledgements · Part of the World Wide Scroll