Schnelles Konvertieren von Hex-Nibbles in Character

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Shardik
Beiträge: 746
Registriert: 25.01.2005 12:19

Re: Schnelles Konvertieren von Hex-Nibbles in Character

Beitrag von Shardik »

Regenduft hat geschrieben:...scheint unter x64 nicht mehr zu funktionieren. :cry:
Seltsam... wurden im x64-Modus die BCD-Anweisungen deaktiviert? Kann doch eigentlich nicht sein, da die doch gerade für Stringumwandlungen ständig verwendet werden, oder?
Um bei x64-Prozessoren für neue Instruktionen Platz zu schaffen wurden von Intel einige angeblich selten verwendete Opcodes entfernt:
[color=#0040FF]MSDN[/color] hat geschrieben:Most x86 instructions continue to be valid for x64 in 64-bit mode. Some rarely-used operations are no longer supported in 64-bit mode, such as:

- binary-coded decimal arithmetic instructions: AAA, AAD, AAM, AAS, DAA, DAS
Intel® 64 and IA-32 Architectures Software Developer’s Manual, Vol. 2A 3-225
Intel hat geschrieben:It is not valid in 64-bit mode.
Bei AMDs x64-Prozessoren ist es nicht anders:
AMD64 Architecture Programmer’s Manual, Volume 3: General-Purpose and System Instructions, p.155
AMD hat geschrieben:Using this instruction in 64-bit mode generates an invalid-opcode (#UD) exception.
Benutzeravatar
Regenduft
Beiträge: 574
Registriert: 25.03.2008 15:07
Wohnort: THE LÄÄÄND!

Re: Schnelles Konvertieren von Hex-Nibbles in Character

Beitrag von Regenduft »

Super Links! :allright:

Auf MSDN ist mir allerdings ein kleiner Fehler aufgefallen:
MSDN hat geschrieben:Data Transfer

The x64 provides new variants of the MOV instruction that can handle 64-bit immediate constants or memory addresses.
Es sind maximal 32-Bit signed Immediates möglich, auch beim x64, keine Quads! Das hatte mich schon mal fast in den Wahnsinn getrieben, weil ich beim rumspielen nicht den Fehler fand!

Code: Alles auswählen

Define a
!MOV [v_a], 2147483647
!MOV [v_a], 2147483648
EDIT: Doch kein Fehler! MSDN bezieht sich nur auf Immediates mit Register als Ziel, das funktioniert... :oops:

Code: Alles auswählen

Define a
!MOV [v_a], 2147483647
!MOV rax, 2147483648
!MOV [v_a], rax
PureBasic 5.73 LTE x86/x64 | Windows 7 (x64)
Antworten