lordvampir
Social Engineer
		- Joined
- Dec 9, 2010
- Messages
- 35
- Reaction score
- 10
собственно такая задача необходимо на б-асме (x64) написать функцию которая проверяла бы некоторые значения, и, если эти значения не соответствуют требованиям, вызывала бы exception.
вот примерный код:
	
		
на x86 этот код работает отлично (единственное отличие в используемых регистрах), на x64 падает с ошибкой: Access violation at address 0000000077790895 in module 'ntdll.dll'. Read of address FFFFFFFFFFFFFFFF.
ни хэлпе XE2, ни в нете ничего толкового найти не могу, очень прошу помощи... заранее спасибо...
			
			вот примерный код:
		Code:
	
	procedure CreateIndexOutOfBoundsException(const Index, Bounds: Byte); //процедура генерации exception
begin
  raise EBinaryException.Create(Format(LoadResString(@SBinaryIndexOutOfBounds), [Index, Bounds]));
end;
function MyFunc(const Value: Int64; Index: Byte): Byte;
asm
  CMP       DL, 50             //сравниваем Index с максимумом дозволенного
  JBE       @BeginGet        //если не выходит за рамки дозволенного, переходим к выполнению необходимых действий 
  MOV       CL, DL            //передаём процедуре CreateIndexOutOfBoundsException полученный индекс
  MOV       DL, 50            //передаём процедуре CreateIndexOutOfBoundsException предел допустимого
  CALL      CreateIndexOutOfBoundsException   //вызываем процедуру генерации exception
@BeginGet:
   // делаем необходимое
end;ни хэлпе XE2, ни в нете ничего толкового найти не могу, очень прошу помощи... заранее спасибо...
 
					
				