Top 1K Features Creators Events Podcasts Books Extensions Interviews Blog Explorer CSV

High Level Assembly

< >

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

#812on PLDB 13Years Old
Homepage · Wikipedia

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 Example Token
Macros ✓ // _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; #endif ?i := i + 1; #endwhile ?bnd := bnd - 1; #endwhile; endmacro;
Line Comments ✓ // comment
Comments ✓
- Build the next great programming language · Add · About · Search · Keywords · Livestreams · Labs · Resources · Acknowledgements · Part of the World Wide Scroll