Re: [fpc-pascal] fpc-2.1.4.x86_64-win64.exe: -Mdelphi not working ?
> On 26 Jul 2007, at 10:44, Skybuck Flying wrote: > > stopping > > Fatal: Compilation aborted > > I guess the Intel assembler syntax is simply not supported for > x86-64. You will have to use AT&T syntax instead. Here are some > google links to tutorials and overview documents: > http://www.google.com/search?rls=en&q=at%26t+assembler+syntax You might also want to look at the source code in rtl/x86_64 in the FPC repository. ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] fpc-2.1.4.x86_64-win64.exe: -Mdelphi not working ?
Ok, I just reinstalled fpc-2.1.4.x86_64-win64.exe: And this time I used the -Mdelphi compiler switch but it still gives problems: Y:\Free Pascal\Tests\Hello World>ppcrossx64 HelloWorld.pas -Mdelphi HelloWorld.pas(9,10) Error: Unknown identifier "EAX" HelloWorld.pas(9,12) Error: Unknown identifier "ECX" HelloWorld.pas(9,12) Error: Asm: [mov ???,???] invalid combination of opcode and operands HelloWorld.pas(16,4) Fatal: There were 3 errors compiling module, stopping Fatal: Compilation aborted I also tried adding: {$mode delphi} Nothing is working :( (Just like the transformers soundtrack song ;) :)) Bye, Skybuck. ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] fpc-2.1.4.x86_64-win64.exe: Hello World program withASM, compilation aborted ? Error: Unknown identifier "EAX" ???
Yes, but the default syntax is AT&T, not Intel. I assume you are coming from a Delphi background, so you can probably best solve this and many future issues you would otherwise encounter by adding {$mode delphi} at the top of all of your source files (or compile with - Mdelphi). Jonas ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal Ah, thanks a lot: I downloaded and installed fpc-2.0.4.i386-win32.exe and was having the same problems: Y:\Free Pascal\Tests\Hello World>fpc HelloWorld.pas -delphi Free Pascal Compiler version 2.0.4 [2006/08/21] for i386 Copyright (c) 1993-2006 by Florian Klaempfl Target OS: Win32 for i386 Compiling HelloWorld.pas HelloWorld.pas(9,10) Error: Unknown identifier "EAX" HelloWorld.pas(9,12) Error: Unknown identifier "ECX" HelloWorld.pas(9,12) Error: Asm: [mov ???,???] invalid combination of opcode and operands HelloWorld.pas(13,2) Warning: Variable "test" does not seem to be initialized HelloWorld.pas(16,4) Fatal: There were 3 errors compiling module, stopping HelloWorld.pas(16,4) Fatal: Compilation aborted Error: C:\Tools\Compilers\Free Pascal\2.0.4 Stable for Win32\bin\i386-Win32\ppc3 86.exe returned an error exitcode (normal if you did not specify a source file t o be compiled) Then I was about to make a post about this and read your tips and now it compiles just fine ;) Y:\Free Pascal\Tests\Hello World>fpc HelloWorld.pas -Mdelphi Free Pascal Compiler version 2.0.4 [2006/08/21] for i386 Copyright (c) 1993-2006 by Florian Klaempfl Target OS: Win32 for i386 Compiling HelloWorld.pas HelloWorld.pas(13,2) Warning: Variable "test" does not seem to be initialized Linking HelloWorld.exe 15 Lines compiled, 0.1 sec I also tried cross compiling with stable version 2.0.4 to Win64: Y:\Free Pascal\Tests\Hello World>fpc HelloWorld.pas -Mdelphi -Twin64 Error: Illegal parameter: -Twin64 Y:\Free Pascal\Tests\Hello World>fpc HelloWorld.pas -Mdelphi -Tx64 Error: Illegal parameter: -Tx64 So I guess I'll have to reinstall the fpc-2.1.4.x86_64-win64.exe to compile to win64 and test out the new assembler syntax which I hope is in there !? ;) Fingers crossed ;) I will install them side by side: C:\Tools\Compilers\Free Pascal\2.0.4 Stable for Win32 C:\Tools\Compilers\Free Pascal\2.1.4 Beta for Win64 I will also add both to the user path. Hopefully that won't give problems ;) If it does give problems I'll remove the stable version and try the beta only ;) Bye, Skybuck. ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] fpc-2.1.4.x86_64-win64.exe: Hello World program with ASM, compilation aborted ? Error: Unknown identifier "EAX" ???
On 26 Jul 2007, at 09:02, Skybuck Flying wrote: Y:\Free Pascal\Tests\Hello World>ppcrossx64 HelloWorld HelloWorld.pas(7,10) Error: Unknown identifier "EAX" HelloWorld.pas(7,12) Error: Unknown identifier "ECX" HelloWorld.pas(7,12) Error: Asm: [mov ???,???] invalid combination of opcode and operands HelloWorld.pas(14,4) Fatal: There were 3 errors compiling module, stopping Fatal: Compilation aborted Surely it's possible to write assembler code in free pascal ? Yes, but the default syntax is AT&T, not Intel. I assume you are coming from a Delphi background, so you can probably best solve this and many future issues you would otherwise encounter by adding {$mode delphi} at the top of all of your source files (or compile with - Mdelphi). Jonas ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] fpc-2.1.4.x86_64-win64.exe: -Mdelphi not working ?
- Original Message - From: "Michael Van Canneyt" <[EMAIL PROTECTED]> To: "FPC-Pascal users discussions" Sent: Thursday, July 26, 2007 11:50 AM Subject: Re: [fpc-pascal] fpc-2.1.4.x86_64-win64.exe: -Mdelphi not working ? On Thu, 26 Jul 2007, Skybuck Flying wrote: Ok, I just reinstalled fpc-2.1.4.x86_64-win64.exe: And this time I used the -Mdelphi compiler switch but it still gives problems: Y:\Free Pascal\Tests\Hello World>ppcrossx64 HelloWorld.pas -Mdelphi HelloWorld.pas(9,10) Error: Unknown identifier "EAX" HelloWorld.pas(9,12) Error: Unknown identifier "ECX" HelloWorld.pas(9,12) Error: Asm: [mov ???,???] invalid combination of opcode and operands HelloWorld.pas(16,4) Fatal: There were 3 errors compiling module, stopping Fatal: Compilation aborted I also tried adding: {$mode delphi} Nothing is working :( (Just like the transformers soundtrack song ;) :) ) Obviously it does not work: the assembler you use is for 32-bit platforms, and that will not work if you cross-compile to 64-bit ! Using 32 bit registers in 64 bit mode should be perfectly valid. It's just like using 16 bit registers or 8 bit registers in 32 bit mode, that's perfectly valid too. So simply put: you are wrong about that, I am 99.99% sure about that ;) The mode statement only applies to pascal syntax, never to assembler. Again, you wrong, me thinks. It does work for asm too. Get your facts straight ;) :) Bye, Skybuck. ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] fpc-2.1.4.x86_64-win64.exe: -Mdelphi not working ?
On Thu, 26 Jul 2007, Skybuck Flying wrote: > Ok, > > I just reinstalled fpc-2.1.4.x86_64-win64.exe: > > And this time I used the -Mdelphi compiler switch but it still gives problems: > > Y:\Free Pascal\Tests\Hello World>ppcrossx64 HelloWorld.pas -Mdelphi > HelloWorld.pas(9,10) Error: Unknown identifier "EAX" > HelloWorld.pas(9,12) Error: Unknown identifier "ECX" > HelloWorld.pas(9,12) Error: Asm: [mov ???,???] invalid combination of opcode > and > operands > HelloWorld.pas(16,4) Fatal: There were 3 errors compiling module, stopping > Fatal: Compilation aborted > > I also tried adding: > > {$mode delphi} > > Nothing is working :( (Just like the transformers soundtrack song > ;) :) ) Obviously it does not work: the assembler you use is for 32-bit platforms, and that will not work if you cross-compile to 64-bit ! The mode statement only applies to pascal syntax, never to assembler. Michael. ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] fpc-2.1.4.x86_64-win64.exe: -Mdelphi not working ?
On 26 Jul 2007, at 10:44, Skybuck Flying wrote: I just reinstalled fpc-2.1.4.x86_64-win64.exe: And this time I used the -Mdelphi compiler switch but it still gives problems: Y:\Free Pascal\Tests\Hello World>ppcrossx64 HelloWorld.pas -Mdelphi HelloWorld.pas(9,10) Error: Unknown identifier "EAX" HelloWorld.pas(9,12) Error: Unknown identifier "ECX" HelloWorld.pas(9,12) Error: Asm: [mov ???,???] invalid combination of opcode and operands HelloWorld.pas(16,4) Fatal: There were 3 errors compiling module, stopping Fatal: Compilation aborted I guess the Intel assembler syntax is simply not supported for x86-64. You will have to use AT&T syntax instead. Here are some google links to tutorials and overview documents: http://www.google.com/search?rls=en&q=at%26t+assembler+syntax Jonas ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] fpc-2.1.4.x86_64-win64.exe: Problem with int64 ? or Problem with Large Decimal values in asm ?
Hello, This is my first attempt at writing AT&T asm code and also 64 bit asm code: The output is supposed to be 2^64 - 1 but it displays 2^32-1. Did I program a bug ? Or is the compiler bugged ? Maybe writeln bugged ? What's wrong ? // *** Begin of Code *** program HelloWorld; {$mode delphi} var test : int64; begin writeln('Hello Free Pascal World !'); asm mov $10, %eax mov %eax, test // no size warnings, kinda nice ;) or could it hide bugs in the future ? end; writeln('Test: ', test ); asm mov $100, %eax mov %eax, test end; writeln('Test: ', test ); // $7FFF not recognized. // bug: only lower bits moved ? // $100 is this hexadecimal 100 or decimal 100 ? // the test above shows 100.. I guess 100 decimal then... // somewhere below is a bug: 4294967295 // maybe move instruction is only 32 bits ? // maybe rax is only 32 bits.. but isn't it 64 bits ? asm mov $9223372036854775807, %rax mov %rax, test end; writeln('Test: ', test ); readln; end. // *** End of Code *** Bye, Skybuck. ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] fpc-2.1.4.x86_64-win64.exe: default switch generates intel asm, ironic ? Can free pascal reverse engineer executables and dll's ?
[... not really Free Pascal related...] Seeing that it sounds like you enjoy assembly language. Maybe you would like the following assembly framework created by Gibson Research Corporation. Homepage with loads of utility apps for Windows. http://www.grc.com/default.htm Most popular freeware on GRC.com http://www.grc.com/freepopular.htm Scroll down until you find: Small Is Beautiful (SIB) It's a Windows assembly language starter kit. Quote from the author: "I write all of my Windows and other utilities in 100% pure assembly language. This results in the smallest, fastest, and most efficient programs possible. I created the "Small is Beautiful" kit to help interested assembly language programmers get started writing Windows programs in pure assembly language." It is very impressive what the author managed to do and his utilities are really small! Around 10-20k, yet does an amazing amount. Where are the days I used to understand assembly language. :-) I wonder if one can do something like that for Linux or the Mac? Regards, - Graeme - On 26/07/07, Skybuck Flying <[EMAIL PROTECTED]> wrote: > Hello, > > I like free pascal compiler to generate an assembler listing of > HelloWorld.pas and fortunately it can do that which is really cool ! > > I simply type: > ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] fpc-2.1.4.x86_64-win64.exe: default switch generates intel asm, ironic ? Can free pascal reverse engineer executables and dll's ?
Hello, I like free pascal compiler to generate an assembler listing of HelloWorld.pas and fortunately it can do that which is really cool ! I simply type: ppcrossx64 HelloWorld.pas -default It then generates a HelloWorld.S file: Here is a snipper from it ;) ; Begin asmlist al_procedures _TEXT SEGMENT ALIGN 16 PUBLIC PASCALMAIN PASCALMAIN: PUBLIC main main: push rbp mov rbp,rsp sub rsp,96 mov qword ptr [rbp-8],rbx call FPC_INITIALIZEUNITS call fpc_get_output mov rbx,rax mov al,1 mov r9,24 mov r8,offset _$HELLOWORLD$_Ld1 mov rdx,rbx mov ecx,0 mov byte ptr [rsp+32],al call fpc_write_text_pchar_as_array call FPC_IOCHECK mov rcx,rbx call fpc_writeln_end call FPC_IOCHECK mov eax,10 mov qword ptr [U_P$HELLOWORLD_TEST],eax call fpc_get_output mov rbx,rax mov al,1 mov r9,5 mov r8,offset _$HELLOWORLD$_Ld2 mov rdx,rbx mov ecx,0 mov byte ptr [rsp+32],al call fpc_write_text_pchar_as_array call FPC_IOCHECK mov r8,qword ptr [U_P$HELLOWORLD_TEST] mov rdx,rbx mov ecx,0 call fpc_write_text_sint call FPC_IOCHECK mov rcx,rbx call fpc_writeln_end call FPC_IOCHECK mov eax,100 mov qword ptr [U_P$HELLOWORLD_TEST],eax call fpc_get_output mov rbx,rax mov al,1 mov r9,5 mov r8,offset _$HELLOWORLD$_Ld2 mov rdx,rbx mov ecx,0 mov byte ptr [rsp+32],al call fpc_write_text_pchar_as_array call FPC_IOCHECK mov r8,qword ptr [U_P$HELLOWORLD_TEST] mov rdx,rbx mov ecx,0 call fpc_write_text_sint call FPC_IOCHECK mov rcx,rbx call fpc_writeln_end call FPC_IOCHECK mov rax,-1 mov qword ptr [U_P$HELLOWORLD_TEST],rax call fpc_get_output mov rbx,rax mov al,1 mov r9,5 mov r8,offset _$HELLOWORLD$_Ld2 mov rdx,rbx mov ecx,0 mov byte ptr [rsp+32],al call fpc_write_text_pchar_as_array call FPC_IOCHECK mov r8,qword ptr [U_P$HELLOWORLD_TEST] mov rdx,rbx mov ecx,0 call fpc_write_text_sint call FPC_IOCHECK mov rcx,rbx call fpc_writeln_end call FPC_IOCHECK mov dword ptr [U_P$HELLOWORLD_TEST],-1 mov dword ptr [U_P$HELLOWORLD_TEST+4],2147483647 call fpc_get_output mov rbx,rax mov al,1 mov r9,5 mov r8,offset _$HELLOWORLD$_Ld2 mov rdx,rbx mov ecx,0 mov byte ptr [rsp+32],al call fpc_write_text_pchar_as_array call FPC_IOCHECK mov r8,qword ptr [U_P$HELLOWORLD_TEST] mov rdx,rbx mov ecx,0 call fpc_write_text_sint call FPC_IOCHECK mov rcx,rbx call fpc_writeln_end call FPC_IOCHECK call fpc_get_input mov rbx,rax mov rcx,rbx call fpc_readln_end call FPC_IOCHECK call FPC_DO_EXIT mov rbx,qword ptr [rbp-8] leave ret ; End asmlist al_procedures ; Begin asmlist al_globals Pretty cool. Kinda ironic how it can generate it, but not interpret it ? ;) For me it doesn't matter that much, I would like to give AT&T asm a try... though it might not be smart because Visual Studio 2005, Intel, probably AMD too, and Delphi 2007 all use intel syntax. So for future compatibility using AT&T asm syntax might not be too smart. But maybe I will like AT&T syntax... I never liked intel syntax that much... kinda stupid and crazy but ok ;) :) I wonder what free pascal can do more ? Can it reverse engineer executables and dll's and produce asm listings ? Bye, Skybuck. - Original Message - From: "Jonas Maebe" <[EMAIL PROTECTED]> To: "FPC-Pascal users discussions" Sent: Thursday, July 26, 2007 10:51 AM Subject: Re: [fpc-pascal] fpc-2.1.4.x86_64-win64.exe: -Mdelphi not working ? On 26 Jul 2007, at 10:44, Skybuck Flying wrote: I just reinstalled fpc-2.1.4.x86_64-win64.exe: And this time I used the -Mdelphi compiler switch but it still gives problems: Y:\Free Pascal\Tests\Hello World>ppcrossx64 HelloWorld.pas -Mdelphi HelloWorld.pas(9,10) Error: Unknown identifier "EAX" HelloWorld.pas(9,12) Error: Unknown identifier "ECX" HelloWorld.pas(9,12) Error: Asm: [mov ???,???] invalid combination of opcode and operands HelloWorld.pas(16,4) Fatal: There were 3 errors compiling module, stopping Fatal: Compilation aborted I guess the Intel assembler syntax is simply not supported for x86-64. You will have to use AT&T syntax instead. Here are some google links to tutorials and overview documents: http://www.google.com/search?rls=en&q=at%26t+assembler+syntax Jonas ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] fpc-2.1.4.x86_64-win64.exe: default switch generatesintel asm, ironic ? Can free pascal reverse engineer executables and dll's ?
Maybe I do enjoy it, however the small is beautifull kit is for 32 bit windows programming. I really want 64 bit windows programming. So I guess it's not for me ;) Bye, Skybuck. - Original Message - From: "Graeme Geldenhuys" <[EMAIL PROTECTED]> To: "FPC-Pascal users discussions" Sent: Thursday, July 26, 2007 1:06 PM Subject: Re: [fpc-pascal] fpc-2.1.4.x86_64-win64.exe: default switch generatesintel asm,ironic ? Can free pascal reverse engineer executables and dll's ? [... not really Free Pascal related...] Seeing that it sounds like you enjoy assembly language. Maybe you would like the following assembly framework created by Gibson Research Corporation. Homepage with loads of utility apps for Windows. http://www.grc.com/default.htm Most popular freeware on GRC.com http://www.grc.com/freepopular.htm Scroll down until you find: Small Is Beautiful (SIB) It's a Windows assembly language starter kit. ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] fpc-2.1.4.x86_64-win64.exe: -Mdelphi not working ?
On 26 Jul 2007, at 11:50, Michael Van Canneyt wrote: The mode statement only applies to pascal syntax, never to assembler. On i386, {$mode delphi} switches the default assembler reader mode from AT&T to Intel style. Jonas ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal
[fpc-pascal] fpc-2.1.4.x86_64-win64.exe: Hello World program with ASM, compilation aborted ? Error: Unknown identifier "EAX" ???
Hello, I downloaded and installed: fpc-2.1.4.x86_64-win64.exe (beta) I wrote a little Hello World program to test the compiler: var test : int64; begin writeln('Hello Free Pascal World !'); asm mov eax, ecx end; writeln('Test: ', test ); readln; end. I get these errors: Y:\Free Pascal\Tests\Hello World>ppcrossx64 HelloWorld HelloWorld.pas(7,10) Error: Unknown identifier "EAX" HelloWorld.pas(7,12) Error: Unknown identifier "ECX" HelloWorld.pas(7,12) Error: Asm: [mov ???,???] invalid combination of opcode and operands HelloWorld.pas(14,4) Fatal: There were 3 errors compiling module, stopping Fatal: Compilation aborted Surely it's possible to write assembler code in free pascal ? Is it a bug/beta issue ? Can I use win32 download to compile to 64 bit programs ? I'll try another version. Bye, Skybuck. ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] fpc-2.1.4.x86_64-win64.exe: Test := 9223372036854775807; and writeln does work... asm stuff does not work.
Hello, I found this link explaining some difference between AT&T and intel asm syntax: http://www.redhat.com/docs/manuals/enterprise/RHEL-4-Manual/gnu-assembler/i386-syntax.html So I tried to add q behind mov maybe that was the problem... Kinda strange that mov is allowed to compile. Anyway it's still not working. However assigning directly to test via pascal code does work: Examples: asm movq $9223372036854775807, %rax // problem ? movq %rax, test // problem ? end; writeln('Test: ', test ); // still 4294967295, problem. Test := 9223372036854775807; writeln('Test: ', test ); // displays 9223372036854775807, ok. Bye, Skybuck. ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] fpc-2.1.4.x86_64-win64.exe: default switch generatesintel asm, ironic ? Can free pascal reverse engineer executables and dll's ?
On 7/26/07, Skybuck Flying <[EMAIL PROTECTED]> wrote: Maybe I do enjoy it, however the small is beautifull kit is for 32 bit windows programming. I really want 64 bit windows programming. Maybe this can help: http://www.jorgon.freeserve.co.uk/ YASM is another option. Cheers, -Krishna -- Your work is to discover your world and then with all your heart give yourself to it. -Buddha ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] fpc-2.1.4.x86_64-win64.exe: default switch generates intel asm, ironic ? Can free pascal reverse engineer executables and dll's ?
On Thu, 26 Jul 2007, Graeme Geldenhuys wrote: > [... not really Free Pascal related...] > > Seeing that it sounds like you enjoy assembly language. Maybe you > would like the following assembly framework created by Gibson Research > Corporation. > > Homepage with loads of utility apps for Windows. > http://www.grc.com/default.htm > > Most popular freeware on GRC.com > http://www.grc.com/freepopular.htm > Scroll down until you find: Small Is Beautiful (SIB) > > It's a Windows assembly language starter kit. > Quote from the author: > "I write all of my Windows and other utilities in 100% pure assembly > language. This results in the smallest, fastest, and most efficient > programs possible. I created the "Small is Beautiful" kit to help > interested assembly language programmers get started writing Windows > programs in pure assembly language." > > > It is very impressive what the author managed to do and his utilities > are really small! Around 10-20k, yet does an amazing amount. > > Where are the days I used to understand assembly language. :-) I > wonder if one can do something like that for Linux or the Mac? For linux I wouldn't recommend it. The API is not stable enough on a binary level. The kernel API is (and even then...), but as soon as you want to access the C or third party libraries, (mysql comes to mind) good luck to you :/ Michael. ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal