Please enable JavaScript to view this site.

thinBasic Help Manual

* * HELP & MANUAL PREMIUM PACK 4 DEMO VERSION * *

This documentation was styled with a demo skin from the Premium Pack 4 add-on for Help & Manual. The contents of the skin are encrypted and not configurable. You can only publish HM projects with this skin. You cannot edit it or change it.

This version is copyright and may only be used for local testing purposes. It may not be distributed.

Please purchase the full version of the Premium Pack to get the configurable skins and remove this notice. The package will also include the Toolbox configuration utility for Premium Pack skins.

 

Description

 

Execute a machine code string created with MC_Eval$ function.

 

Syntax

 

Ret = MC_Exec(MachineCodeString)

 

Returns

 

Number.

 

Parameters

 

Name

Type

Optional

Meaning

MachineCodeString

String

No

Machine code string to execute

 

Remarks

 

Restrictions

 

See also

 

Examples

 

' Using Machine Code with ThinBasic

'---------------------------------------------------------------------------

'---Reference:

' Intel x86 Architecture Ref Manual Vol 2

'---http://developer.intel.com/design/pentiumii/manuals/243191.htm

'---------------------------------------------------------------------------

' Syntax rules:

' #Variable patches in long address of Variable (4 bytes)

' NLn patches in long decimal value n (4 bytes)

' comments are indicated by a quote mark '

' all other words are read as hexadecimal bytes.

' An error during MC_Eval$ will produce a string containing &hc3 (ret) only.

   

  '----------------------------------------------

  ' arithmentic on the Floating Point Processor (FPU)

  '

  ' (vv1+vv2) / (vv3+vv4)

  '

  ' 23 bytes

  '----------------------------------------------

  Dim vv(8) As Double

  Dim sMC   As String

  

  sMC = MC_EVAL$ "

                  b8 #vv    ' vv base address

                  dd 40 00  ' fld  qword ptr [eax+00]  ' ( vv1

                  dc 40 08  ' fadd qword ptr [eax+08]  ' + vv2

                  dd 40 10  ' fld  qword ptr [eax+16]  ' ) ( vv3 

                  dc 40 18  ' fadd qword ptr [eax+24]  ' +vv4

                  'de c9    ' fmulp st(1)              '  

                  de f9     ' fdivp st(1)              ' ) /

                  dd 58 38  ' fstp qword ptr [eax+56]  ' = vv8        

                  c3        ' ret                 '

                  "

                  '-------------------------------'

   

  vv(1) = 1.5

  vv(2) = 2

  vv(3) = 2.5

  vv(4) = 3

  ' (vv1+vv2) / (vv3+vv4)

  ' = 0.636363...

  

  MC_Exec sMC

  

  MSGBOX 0, vv(8) ' result

 

 

 

 

Created with Help+Manual 8 and styled with Premium Pack Version 4 © by EC Software