Anwendung soll auf Intel laufen

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut

Anwendung soll auf Intel laufen

Beitragvon Mathias » 2. Jul 2018, 17:57 Anwendung soll auf Intel laufen

Wie muss ich das mit den Compileranweisungen lösen, so das der ASM-Code nur auf Intel kompatiblen läuft, egal ob 32 oder 64Bit ?
ZB. auf einem ARM (Raspberry) soll es ohne ASM laufen.

Folgender Code nimmt den ASM-Block nur auf auf 64Bit.
Code: Alles auswählen
{$ifdef cpux86_64 or cpu386}
function Vec_Add(const v0, v1: TVector4f): TVector4f; assembler; nostackframe; register;
asm
         Movups  Xmm0, [v0]
         Movups  Xmm1, [v1]
         Addps   Xmm1, Xmm0
         Movups  [Result], Xmm1
end;
{$else}
function Vec_Add(const v0, v1: TVector4f): TVector4f; inline;
begin
  Result[0] := v0[0] + v1[0];
  Result[1] := v0[1] + v1[1];
  Result[2] := v0[2] + v1[2];
  Result[3] := v0[3] + v1[3];
end;
{$endif}   


Hier habe ich mal geguckt, aber nicht gescheites gefunden: http://wiki.freepascal.org/Conditional_compilation/de
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 4262
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon mse » 2. Jul 2018, 19:35 Re: Anwendung soll auf Intel laufen

Code: Alles auswählen
 
{$if defined(cpux86_64) or defined(cpux86)}
 
mse
 
Beiträge: 1967
Registriert: 16. Okt 2008, 09:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0) | 
CPU-Target: x86,x64,ARM
Nach oben

Beitragvon Mathias » 2. Jul 2018, 21:40 Re: Anwendung soll auf Intel laufen

Danke.
Jetzt geht es, sobald ich ARM wähle, wird der ASM-Code wie erwartet grau.

Man hätte nur das englische Wiki angucken müssen, dann hatte man ein Beispiel man and gesehen.
Ich habe dies gerade mit or probiert, geht aber nicht. :roll:
Code: Alles auswählen
{$ifdef cpux86_64 or $ifdef cpux86}


Aber deine Variante geht zum Glück. :wink:

Ich habe noch das deutsche Wiki um cpux86 ergänzt.
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 4262
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon mse » 3. Jul 2018, 04:58 Re: Anwendung soll auf Intel laufen

defined(cpu386) oder defined(cpui386) gehen auch.
mse
 
Beiträge: 1967
Registriert: 16. Okt 2008, 09:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0) | 
CPU-Target: x86,x64,ARM
Nach oben

Beitragvon mischi » 3. Jul 2018, 12:28 Re: Anwendung soll auf Intel laufen

Im Quellcode von fpc habe ich sowohl cpu386 als auch cpui386 gefunden. Ist das nur ein historischer gewachsener Unterschied oder steckt da mehr dahinter?
MiSchi macht die fink-Pakete
mischi
 
Beiträge: 204
Registriert: 10. Nov 2009, 18:49
OS, Lazarus, FPC: macOS, 10.13, lazarus 1.8.x, fpc 3.0.x | 
CPU-Target: 32Bit/64bit
Nach oben

Beitragvon mse » 3. Jul 2018, 12:55 Re: Anwendung soll auf Intel laufen

mischi hat geschrieben:Im Quellcode von fpc habe ich sowohl cpu386 als auch cpui386 gefunden. Ist das nur ein historischer gewachsener Unterschied oder steckt da mehr dahinter?

Das scheint alles dasselbe zu sein, compiler/options.pas:
Code: Alles auswählen
 
{ some stuff for TP compatibility }
{$ifdef i386}
  def_system_macro('CPU86');
  def_system_macro('CPU87');
  def_system_macro('CPU386');
{$endif}
 
{ new processor stuff }
{$ifdef i386}
  def_system_macro('CPUI386');
  def_system_macro('CPU32');
  def_system_macro('CPUX86');
  def_system_macro('FPC_HAS_TYPE_EXTENDED');
  def_system_macro('FPC_HAS_TYPE_DOUBLE');
  def_system_macro('FPC_HAS_TYPE_SINGLE');
{$endif}
 
mse
 
Beiträge: 1967
Registriert: 16. Okt 2008, 09:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0) | 
CPU-Target: x86,x64,ARM
Nach oben

Beitragvon Mathias » 3. Jul 2018, 16:53 Re: Anwendung soll auf Intel laufen

Könnte dies vielen Option ein Grund sein, weis das FPC nicht so schnell wie Delphi ist ?
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 4262
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon mse » 3. Jul 2018, 19:31 Re: Anwendung soll auf Intel laufen

Mathias hat geschrieben:Könnte dies vielen Option ein Grund sein, weis das FPC nicht so schnell wie Delphi ist ?

Ich denke nicht, auf jeden Fall nicht hauptsächlich. Das Hauptproblem liegt vermutlich eher in der Architektur, in der exzessiven Verwendung von Klassen und dass die Free Pascal Kompiliergeschwindigkeit einen kleinen Stellenwert hat.
Die neueren Delphi Compiler sind ja auch nicht mehr so schnell wie Delphi 7, vermutlich gibt es dort keine Entwickler mehr, welche schnellen Code schreiben können, wollen oder dürfen.
mse
 
Beiträge: 1967
Registriert: 16. Okt 2008, 09:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0) | 
CPU-Target: x86,x64,ARM
Nach oben

• Themenende •

Zurück zu Freepascal



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste

cron
porpoises-institution
accuracy-worried