More syntax fixes
authorRobert Pengelly <robertapengelly@hotmail.com>
Thu, 21 May 2026 05:46:34 +0000 (06:46 +0100)
committerRobert Pengelly <robertapengelly@hotmail.com>
Thu, 21 May 2026 05:46:34 +0000 (06:46 +0100)
parse.c

diff --git a/parse.c b/parse.c
index 4580279a6598ab1c0bb19de26af3765db2f16153..e348d597facc2f4ae6de8d57b559f853eb428014 100644 (file)
--- a/parse.c
+++ b/parse.c
@@ -6113,14 +6113,16 @@ static void switch_section (int sec) {
         return;
     }
     
+    if (state->syntax & ASM_SYNTAX_MASM) {
+        fprintf (state->ofp, "\n");
+    }
+    
     if (sec == SECTION_TEXT) {
     
-        if (state->syntax & ASM_SYNTAX_MASM) {
-            fprintf (state->ofp, "\n%s\n", ".code");
-        } else if (state->syntax & ASM_SYNTAX_NASM) {
+        if (state->syntax & ASM_SYNTAX_NASM) {
             fprintf (state->ofp, "section .text\n");
         } else {
-            fprintf (state->ofp, "%s\n", ".text");
+            fprintf (state->ofp, "%s\n", (state->syntax & ASM_SYNTAX_MASM ? ".code" : ".text"));
         }
     
     } else if (sec == SECTION_DATA) {
@@ -20867,11 +20869,17 @@ static void emit_load_floating_const_bits_now (int size, int64_s v) {
     if (state->syntax & ASM_SYNTAX_MASM) {
     
         fprintf (state->ofp, ".data\n");
-        fprintf (state->ofp, "LC%d_flt:\n", lab);
-        fprintf (state->ofp, "    dd %lu\n", v.low & U32_MASK);
         
         if (size == (DATA_DOUBLE & 0x1f)) {
-            fprintf (state->ofp, "    dd %lu\n", v.high & U32_MASK);
+        
+            if (v.high & U32_MASK) {
+                fprintf (state->ofp, "LC%d_flt dq %lu%lu\n", lab, v.high & U32_MASK, v.low & U32_MASK);
+            } else {
+                fprintf (state->ofp, "LC%d_flt dd %lu\n", lab, v.low & U32_MASK);
+            }
+        
+        } else {
+            fprintf (state->ofp, "LC%d_flt dd %lu\n", lab, v.low & U32_MASK);
         }
         
         fprintf (state->ofp, ".code\n");
@@ -33147,19 +33155,19 @@ static void emit_global_scalar (int64_s value, int size) {
             old_size = size;
             
             if (size == (DATA_CHAR & 0x1f)) {
-                fprintf (state->ofp, "db %ld", low & 0xFFUL);
+                fprintf (state->ofp, " db %ld", low & 0xFFUL);
             } else if (size == (DATA_SHORT & 0x1f)) {
-                fprintf (state->ofp, "dw %ld", low & 0xFFFFUL);
+                fprintf (state->ofp, " dw %ld", low & 0xFFFFUL);
             } else if (size == (DATA_LLONG & 0x1f) || size == (DATA_DOUBLE & 0x1f)) {
             
                 if (high & U32_MASK) {
-                    fprintf (state->ofp, "dq %lu", high & U32_MASK);
+                    fprintf (state->ofp, " dq %lu%lu", high & U32_MASK, low & U32_MASK);
+                } else {
+                    fprintf (state->ofp, " dq %lu", low & U32_MASK);
                 }
-                
-                fprintf (state->ofp, "dq %lu", low & U32_MASK);
             
             } else {
-                fprintf (state->ofp, "dd %lu", low & U32_MASK);
+                fprintf (state->ofp, " dd %lu", low & U32_MASK);
             }
         
         } else {
@@ -33241,7 +33249,7 @@ static void emit_global_address (const char *symbol, int size) {
     asm_symbol = asm_global_symbol_name (symbol);
     
     if (state->syntax & ASM_SYNTAX_MASM) {
-        fprintf (state->ofp, "dd offset %s", asm_symbol);
+        fprintf (state->ofp, " dd offset %s\n", asm_symbol);
     } else if (state->syntax & ASM_SYNTAX_NASM) {
         fprintf (state->ofp, "    dd %s\n", asm_symbol);
     } else {
@@ -33339,20 +33347,18 @@ static void emit_global_label (const char *name, int is_static) {
     
     if (state->syntax & ASM_SYNTAX_MASM) {
     
-        if (!is_static) {
+        if (current_section != SECTION_TEXT) {
+            fprintf (state->ofp, "\n");
+        }
         
-            if (current_section != SECTION_TEXT) {
-                fprintf (state->ofp, "\n");
-            }
-            
+        if (!is_static) {
             fprintf (state->ofp, "public %s\n", asm_name);
-        
         }
         
         if (current_section == SECTION_TEXT) {
             fprintf (state->ofp, "%s:\n", asm_name);
         } else {
-            fprintf (state->ofp, "%s ", asm_name);
+            fprintf (state->ofp, "%s", asm_name);
         }
     
     } else if (state->syntax & ASM_SYNTAX_NASM) {