DoctorWkt / acwj

A Compiler Writing Journey
GNU General Public License v3.0
10.55k stars 1.02k forks source link

A wrong nasm assembly instruction in cgn.c of 08_If_Statements #64

Open vcheckzen opened 1 year ago

vcheckzen commented 1 year ago

https://github.com/DoctorWkt/acwj/blob/14e9397369dcd428ee7ba6dcf290407403f4c4e7/08_If_Statements/cgn.c#L157C68-L157C68

movzb cannot be recognised by nasm, it should be substituted by movzx according to the nasm doc.

MOVZX            reg16,mem                386 
MOVZX            reg16,reg8               386 
MOVZX            reg32,rm8                386 
MOVZX            reg32,rm16               386 
MOVZX            reg64,rm8                X86_64,LONG 
MOVZX            reg64,rm16               X86_64,LONG 
the-grue commented 1 year ago

Hi @vcheckzen ! It would appear you are correct. Apparently that code wasn't exercised by the test, so I didn't catch and correct it. Later versions have the correct opcode.

Feel free to submit a pull request for the fix since you found it.

Jim