Search Results

Search found 19586 results on 784 pages for 'machine instruction'.

Page 47/784 | < Previous Page | 43 44 45 46 47 48 49 50 51 52 53 54  | Next Page >

  • Inserting instructions into method.

    - by Alix
    Hi, (First of all, this is a very lengthy post, but don't worry: I've already implemented all of it, I'm just asking your opinion.) I'm having trouble implementing the following; I'd appreciate some help: I get a Type as parameter. I define a subclass using reflection. Notice that I don't intend to modify the original type, but create a new one. I create a property per field of the original class, like so: [- ignore this text here; I had to add something or the formatting wouldn't work <-] public class OriginalClass { private int x; } public class Subclass : OriginalClass { private int x; public int X { get { return x; } set { x = value; } } } [This is number 4! Numbered lists don't work if you add code in between; sorry] For every method of the superclass, I create an analogous method in the subclass. The method's body must be the same except that I replace the instructions ldfld x with callvirt this.get_X, that is, instead of reading from the field directly I call the get accessor. I'm having trouble with step 4. I know you're not supposed to manipulate code like this, but I really need to. Here's what I've tried: Attempt #1: Use Mono.Cecil. This would allow me to parse the body of the method into human-readable Instructions, and easily replace instructions. However, the original type isn't in a .dll file, so I can't find a way to load it with Mono.Cecil. Writing the type to a .dll, then load it, then modify it and write the new type to disk (which I think is the way you create a type with Mono.Cecil), and then load it seems like a huge overhead. Attempt #2: Use Mono.Reflection. This would also allow me to parse the body into Instructions, but then I have no support for replacing instructions. I've implemented a very ugly and inefficient solution using Mono.Reflection, but it doesn't yet support methods that contain try-catch statements (although I guess I can implement this) and I'm concerned that there may be other scenarios in which it won't work, since I'm using the ILGenerator in a somewhat unusual way. Also, it's very ugly ;). Here's what I've done: private void TransformMethod(MethodInfo methodInfo) { // Create a method with the same signature. ParameterInfo[] paramList = methodInfo.GetParameters(); Type[] args = new Type[paramList.Length]; for (int i = 0; i < args.Length; i++) { args[i] = paramList[i].ParameterType; } MethodBuilder methodBuilder = typeBuilder.DefineMethod( methodInfo.Name, methodInfo.Attributes, methodInfo.ReturnType, args); ILGenerator ilGen = methodBuilder.GetILGenerator(); // Declare the same local variables as in the original method. IList<LocalVariableInfo> locals = methodInfo.GetMethodBody().LocalVariables; foreach (LocalVariableInfo local in locals) { ilGen.DeclareLocal(local.LocalType); } // Get readable instructions. IList<Instruction> instructions = methodInfo.GetInstructions(); // I first need to define labels for every instruction in case I // later find a jump to that instruction. Once the instruction has // been emitted I cannot label it, so I'll need to do it in advance. // Since I'm doing a first pass on the method's body anyway, I could // instead just create labels where they are truly needed, but for // now I'm using this quick fix. Dictionary<int, Label> labels = new Dictionary<int, Label>(); foreach (Instruction instr in instructions) { labels[instr.Offset] = ilGen.DefineLabel(); } foreach (Instruction instr in instructions) { // Mark this instruction with a label, in case there's a branch // instruction that jumps here. ilGen.MarkLabel(labels[instr.Offset]); // If this is the instruction that I want to replace (ldfld x)... if (instr.OpCode == OpCodes.Ldfld) { // ...get the get accessor for the accessed field (get_X()) // (I have the accessors in a dictionary; this isn't relevant), MethodInfo safeReadAccessor = dataMembersSafeAccessors[((FieldInfo) instr.Operand).Name][0]; // ...instead of emitting the original instruction (ldfld x), // emit a call to the get accessor, ilGen.Emit(OpCodes.Callvirt, safeReadAccessor); // Else (it's any other instruction), reemit the instruction, unaltered. } else { Reemit(instr, ilGen, labels); } } } And here comes the horrible, horrible Reemit method: private void Reemit(Instruction instr, ILGenerator ilGen, Dictionary<int, Label> labels) { // If the instruction doesn't have an operand, emit the opcode and return. if (instr.Operand == null) { ilGen.Emit(instr.OpCode); return; } // Else (it has an operand)... // If it's a branch instruction, retrieve the corresponding label (to // which we want to jump), emit the instruction and return. if (instr.OpCode.FlowControl == FlowControl.Branch) { ilGen.Emit(instr.OpCode, labels[Int32.Parse(instr.Operand.ToString())]); return; } // Otherwise, simply emit the instruction. I need to use the right // Emit call, so I need to cast the operand to its type. Type operandType = instr.Operand.GetType(); if (typeof(byte).IsAssignableFrom(operandType)) ilGen.Emit(instr.OpCode, (byte) instr.Operand); else if (typeof(double).IsAssignableFrom(operandType)) ilGen.Emit(instr.OpCode, (double) instr.Operand); else if (typeof(float).IsAssignableFrom(operandType)) ilGen.Emit(instr.OpCode, (float) instr.Operand); else if (typeof(int).IsAssignableFrom(operandType)) ilGen.Emit(instr.OpCode, (int) instr.Operand); ... // you get the idea. This is a pretty long method, all like this. } Branch instructions are a special case because instr.Operand is SByte, but Emit expects an operand of type Label. Hence the need for the Dictionary labels. As you can see, this is pretty horrible. What's more, it doesn't work in all cases, for instance with methods that contain try-catch statements, since I haven't emitted them using methods BeginExceptionBlock, BeginCatchBlock, etc, of ILGenerator. This is getting complicated. I guess I can do it: MethodBody has a list of ExceptionHandlingClause that should contain the necessary information to do this. But I don't like this solution anyway, so I'll save this as a last-resort solution. Attempt #3: Go bare-back and just copy the byte array returned by MethodBody.GetILAsByteArray(), since I only want to replace a single instruction for another single instruction of the same size that produces the exact same result: it loads the same type of object on the stack, etc. So there won't be any labels shifting and everything should work exactly the same. I've done this, replacing specific bytes of the array and then calling MethodBuilder.CreateMethodBody(byte[], int), but I still get the same error with exceptions, and I still need to declare the local variables or I'll get an error... even when I simply copy the method's body and don't change anything. So this is more efficient but I still have to take care of the exceptions, etc. Sigh. Here's the implementation of attempt #3, in case anyone is interested: private void TransformMethod(MethodInfo methodInfo, Dictionary<string, MethodInfo[]> dataMembersSafeAccessors, ModuleBuilder moduleBuilder) { ParameterInfo[] paramList = methodInfo.GetParameters(); Type[] args = new Type[paramList.Length]; for (int i = 0; i < args.Length; i++) { args[i] = paramList[i].ParameterType; } MethodBuilder methodBuilder = typeBuilder.DefineMethod( methodInfo.Name, methodInfo.Attributes, methodInfo.ReturnType, args); ILGenerator ilGen = methodBuilder.GetILGenerator(); IList<LocalVariableInfo> locals = methodInfo.GetMethodBody().LocalVariables; foreach (LocalVariableInfo local in locals) { ilGen.DeclareLocal(local.LocalType); } byte[] rawInstructions = methodInfo.GetMethodBody().GetILAsByteArray(); IList<Instruction> instructions = methodInfo.GetInstructions(); int k = 0; foreach (Instruction instr in instructions) { if (instr.OpCode == OpCodes.Ldfld) { MethodInfo safeReadAccessor = dataMembersSafeAccessors[((FieldInfo) instr.Operand).Name][0]; byte[] bytes = toByteArray(OpCodes.Callvirt.Value); for (int m = 0; m < OpCodes.Callvirt.Size; m++) { rawInstructions[k++] = bytes[put.Length - 1 - m]; } bytes = toByteArray(moduleBuilder.GetMethodToken(safeReadAccessor).Token); for (int m = instr.Size - OpCodes.Ldfld.Size - 1; m >= 0; m--) { rawInstructions[k++] = bytes[m]; } } else { k += instr.Size; } } methodBuilder.CreateMethodBody(rawInstructions, rawInstructions.Length); } private static byte[] toByteArray(int intValue) { byte[] intBytes = BitConverter.GetBytes(intValue); if (BitConverter.IsLittleEndian) Array.Reverse(intBytes); return intBytes; } private static byte[] toByteArray(short shortValue) { byte[] intBytes = BitConverter.GetBytes(shortValue); if (BitConverter.IsLittleEndian) Array.Reverse(intBytes); return intBytes; } (I know it isn't pretty. Sorry. I put it quickly together to see if it would work.) I don't have much hope, but can anyone suggest anything better than this? Sorry about the extremely lengthy post, and thanks.

    Read the article

  • Squid on an Azure VM

    - by LantisGaius
    I can't get it to work. Here's exactly what I did: Create a new Azure VM, Windows Server 2012. RDP to the new VM Download & Extract Squid for Windows (2.7.STABLE8) Rename the conf files (squid, mime & cachemgr) Add the following lines on the end of squid.conf auth_param basic program c:/squid/libexec/ncsa_auth.exe c:/squid/etc/passwd.txt auth_param basic children 5 auth_param basic realm Welcome to http://abcde.fg Squid Proxy! auth_param basic credentialsttl 12 hours auth_param basic casesensitive off acl ncsa_users proxy_auth REQUIRED http_access allow ncsa_users Use http://www.htaccesstools.com/htpasswd-generator-windows/ to create passwd.txt Test passwd.txt via c:/squid/libexec/ncsa_auth.exe c:/squid/etc/passwd.txt (success) squid -z squid -i net start squid (No errors so far). go to https://manage.windowsazure.com, Virtual Machines - myVM - Endpoints Add Endpoint: Name: Squid Protocol: TCP Public Port: 80 Private Port: 3128 That's it. Unfortunately, it doesn't work. I think I screwed something up at the endpoint? I'm not sure.. help? EDIT: I'm testing it via Firefox - Options - Advanced - Network, and the exact error is "The Proxy Server is refusing connections." I'm using my DNS as the Proxy server "abcdef.cloudapp.net" and port 80 (since that's my public endpoint).

    Read the article

  • Mac OS X - Force screen resolution

    - by wjlafrance
    Hello! I'm trying to use the lastest version of a certain development tool and it's sort of difficult to use on a 1200x800 display. Using VMWare Fusion, I can set the screen resolution inside a VM to 1900x1200 on my 13" MBP and it's still usable. Does anyone know of a way to force Mac OS X to scale it's resolution? I tried ScreenResX and it said the scaled resolution was "invalid" or something like that. I know that there are only a certain number of pixels on the screen. I'm only asking how to scale, not set a legit resolution. My current hack solution is to run Snow Leopard Server in a VM with resolution scaling.

    Read the article

  • Virtual Win XP Mode stopped HP LJ Pro M1212nf MFP printing in Win 7 Pro

    - by Dee
    Virtual Win XP Mode stopped HP LJ Pro M1212nf MFP printing in Win 7 Pro: I am running Windows 7 Pro with Virtual Windows XP Mode. My printer is HP LaserJet Pro M1212nf MFP attached directly to a USB port of the computer. This printer was working fine in Windows 7, until I tried to attach the printer to the Virtual Windows XP Mode in order to load the printer driver in the Virtual Windows XP Mode. At that point, the printer disappeared from the list of USB devices on the toolbar at the top of the window of the Virtual Windows XP Mode. After installing the printer driver in the Virtual Windows XP Mode, the printer did not work in that mode and also no longer worked in Windows 7. In Windows 7 and in the Virtual Windows XP Mode, print files are sent to the print queue, but are never printed. In Windows 7, the print queue states that the printer is offline. In the Virtual Windows XP Mode, the printer can be toggled from "Print Offline" to "Print Online", but no print files are ever printed from the print queue. The printer acts as though it is no longer connected to the computer, even though it is still physically connected to the USB port of the computer. How can I get the printer to work again in Windows 7? (At this point, I am no longer interested in using the Virtual Windows XP Mode.) I have tried a large number of things to find and fix the printer problem, but have had no success. Device Manager cannot see the printer even though it is physically connected via USB port (have tried different USB ports) to the computer. Restoring Win 7 and Virtual Win XP Mode to times before the problem does not fix the problem. How can I get the computer to see the printer, so that I can print again in Win 7?

    Read the article

  • why does Virtualbox use 15-20% CPU when VM is paused?

    - by laramichaels
    Hello, I run VirtualBox 3.1 on Ubuntu with a Win XP guest. I have noticed to my surprise that when I pause the VM (its screen grays out) VirtualBox continues using 15-20% of the host's CPU. Is this normal behavior? Is there a way to avoid it? (Without saving the state of the VM and exiting VirtualBox.) Thanks for any insights! ~lara

    Read the article

  • Can you run Snow Leopard Server on a VM?

    - by Crash893
    I'm thinking of buying a mac mini server for my email needs (small office server for 999 with all the features i want build in) I wanted to give it a test drive before i commit so i was thinking "hey this sounds like the perfect job for a vm" however i havent been able to see any examples of running snow lepoard server on a vm does anyone know if its possible and/or there is a premade vm package to test it out with?

    Read the article

  • Linux Mint 13 64bit Cinnamon and Oracle Virtualbox: 3d acceleration crash

    - by Stephen Swensen
    I've recently got an interest in Linux. After some research, it looks like Linux Mint 13 cinnamon is hot and I thought I'd try it out... I'm running Windows 7 64bit and have experience with Oracle Virtual Box. So I thought it would be a good idea to try out Linux Mint inside Virtual Box. I download Linux Mint 13 64bit Cinnamon and set it up in my VM player... Nothing special about my settings. Except Linux Mint 13 Cinnamon requires 3d acceleration, and when I enable that, it crashes whenever I open the Menu in the bottom left corner of the guest OS (and some other times too)... I've seen other mentions of this problem on the web, but no solutions. Is there a solution? If not, any suggestions short of installing the OS on a partition for trying out this OS (I'm not interested in the LIve mode either - I'd really like to get the full feel for it)?

    Read the article

  • VMware Workstation Recording feature

    - by Steeve
    I have seen some documentation about a Record/Replay feature in VMware workstation 6 and 7 here : http://cto.vmware.com/the-amazing-vm-recordreplay-feature-in-vmware-workstation-6/ http://www.vmware.com/pdf/ws65_manual.pdf But I don't find that feature in my VMWare Workstation 10. I don't find any manual for the 10th version by the way. Do you know if that feature has been removed ? Or do you know where I can find the feature in VMware Workstation 10 (or 9) ? Thanks in advance,

    Read the article

  • VMware Workstation update stopped autofit guest working

    - by u8sand
    VMware one day offered an update (8.0.1 build-528992 my current version) from 8.0. I accepted it, because updates usually fix problems. However not in this case... Previously it worked very well. Now, it still "works" but the one glitch I'm getting makes it too hard to deal with. This screenshot will explain my problem: As you can see, my virtual PC is not resizing correctly. (This happens with any operating system), autofit guest just doesn't work - it only results in things like this happening. Thanks to the tools it becomes very hard to NOT autofit guest. I've tried uninstalling 8.0.1 completely and installing 8.0 again but with the same results. I don't really understand what the new update has done to VMware Workstation or to my virtual machines. I do believe this isn't VMware Workstation's direct fault but from VMware Tools, which would explain why going back to 8.0 didn't work since VMware tools has its own updates. How can I fix this? The host is running Windows 7 Ultimate 64-bit.

    Read the article

  • win xp client, win 7 host, only xp drivers

    - by brett
    I have a win 7 64 bit box which has xp on it in a vmware module and also the win7 version. I can use my old usb wifi card under virtual xp as i have the wifi drivers, but apparently the manufacturing company never made any further drivers, nor did it release the source code. Is it possible to get networking between the client and the host, so that my host can browse etc? I thought the microsoft loopback adapter might be the answer but ever example i can find of it's use describes a setup where the host is connected fine and needs to route data to the client as well.

    Read the article

  • Repairing Damage to VMWare Virtual Disk

    - by Lachlan McDonald
    Evening all, I've got a considerable problem I'm hoping to get some resolution on. I had two VMWare 6.5 virtual machines, one running Ubuntu 9.10 and the other Ubuntu 10.04. I used 9.10 as a testing server, so I could install a LAMP environment to prepare some code. Over the months I took a number of snapshots of this VM just in case something went wrong, and did a full copy of the entire VM a month ago. I created the 10.04 VM when Lucid Lynx launched so I could continue development on a fresh install. To get the files over, I simply added the 9.10 virtual disk into the 10.04 VM, grabbed some of the files I needed, and dismounted it. Unknown to me at the time, the changes to the 9.04 virtual disk meant that I could no longer boot it with the 9.10 VM. I'd always get the "The parent virtual disk has been modified since the child was created." error. I decided this was a good time to backup all the critical files, but now whenever I open the 9.04 disk to get the data it isn't in the same state as it was earlier. My question is; is it possible when I'm mounting the virtual disk that I'm not seeing the most recent snapshot, or in my blundering, have I lost the virtual disk. Cheers

    Read the article

  • Need suggetion on installing windows server on windows 7 laptop

    - by Kumar
    I recently bought one laptop with windows 7 for software development. unfortunately windows 7 home basic comes with limited version of IIS which is not sufficient for development. I would like to have windows server 2008 R2 for server development. i don't want to format windows 7 and install windows sever as i got win 7 with laptop. Could any one please suggest me the best possible option of having windows server 2008 on my laptop without formatting windows 7. Any solution should not void warranty of my laptop. Regards, Kumar.

    Read the article

  • NetBSD as VMware workstation guest: `startx` hangs and maxes all CPUs utilization

    - by Howard Guo
    I am using VMware workstation 8. I have attempted to install and run NetBSD 5.1.2 and 6.0. Installations all went OK and the system was usable until I install a window manager. After installed xfce4, in NetBSD 5.1.2, I could startx and used xfce4 two times, however consecutive startx will hang and max all CPU to 100%. In NetBSD 6.0 RC2, I could not even start xfce4 once, startx hangs and max all CPU to 100%. I have tried to use both vmwlegacy and vmware device drivers, they don't help. I have also tried both 32bit and 64bit NetBSD, they behave in the same way. I also tried to catch the output of startx, however system was already hanging before the output gets flushed. Apparently no one else has encountered these troubles on Google search, did I miss any configuration piece? Any other suggestions please?

    Read the article

  • Installing Windows server 2008 on not VT system

    - by Shahid
    I have a Dell Inspiron 1440 laptop and it has no virtualization support, i want to install Windows Server 2008 on it using Virtual Box, i know that we can install Mac OS on not Virtualization supported system using some patch. I also haired that Virtual box don't needs hardware virtualization, it will do that using software virtualization. how can i achieve that, any guidance would be very nice. Thanks

    Read the article

  • "Integrated" VMs (As opposed to "Sandboxed")

    - by sabof
    It is common for virtual machines to be sandboxes, their interaction with the host OS being limited to the absolutely necessary. Are there any projects that would try to integrate VMs (specifically Virtual Box) with their host OS (specifically Ubuntu on Windows host, but I'd be curious of other combinations as well)? Things like opening all files with a certain extension in either the host or the guest. Possibly other nice things I haven't thought of.

    Read the article

  • how to use vmware converter

    - by user23950
    how do I use vmware converter? I've tried to search google but I can't find any tutorial on how to use it. I just wish to convert my xp installation to a vmware file so that I could use it on vm ware player

    Read the article

  • How to route HyperV VMs traffic through host VPN

    - by Random
    I'm using Windows 8.1 Pro with HyperV. I have several VMs for development, all of them connected with host via Internal adapter using network addresses: 192.168.10.0/24 Where: 192.168.10.1 is my host's Hyper-V internal NIC address. When I'm not in my office I use 3G usb dongle an dialup VPN connection. I would like to route traffic from all existing and future VMs through the VPN. In best scenario traffic would be routed only partially to the local company network addresses 10.1.1.0/24 I don't want to use sharing because I'm switching between WiFi, USB 3G dongle and VPN. Moving to other virtualization is also not an option for me.

    Read the article

  • Virtual Box fails my OSes :(

    - by Kingston Town
    I have a little problem with Virtual Box latest version in which i have installed Mint (also latest version).During creation of a new vdi partition I chose settings as default, that is, I don't create any tiny partitions myself. The installation works. But later while the new OS is running (not in Live mode) I try installing/updating new software available, the system automatically fails, it reports an error of DISKFULL, I close the message box then power off my system. Later on I can't boot it up again anymore. It hangs with a black screen and the PAUSE status. I have no idea why. I have installed 2 OSes and both fail at the same error. I doubt something is not right about the current version of VBox. Thank you . My host OS is Windows7 and my Clients are Mint and CentOS

    Read the article

  • Ubuntu with Netatalk and Samba TimeMachine can't connect

    - by Philip
    I installed netatalk on my Ubuntu Server a few weeks ago and configured it so that I could use Timemachine from my mac to backup on a server instead of a external hard drive. It worked really good until yesterday when I installed Samba to be able to share certain folders on my server to my mac. Now I receive an error msg: There are no shares available or you are not allowed to access them on the server. Please contact your system administrator to resolve the problem. From what I understand is that the problem is on the server and not on my mac. I have tried to restart the computer and without adding any of the folders Samba is sharing adding the timemachine "afp://...@...". Is there a problem running them both at the same time, do I need to configure samba so that it doesn't reject afp? I'm pretty new at this...

    Read the article

  • OSX: Howto start VirtualBox VM on startup?

    - by snies
    The Question How do i start this Wiki VM at the startup of the OSX Server? I am running OSX Server 10.6.8 and VirtualBox 4.1.8 r75467 and a Debian Linux VM (called "wiki"). . What I tried so far Following this article: http://mikkel.hoegh.org/blog/2010/12/23/run-virtualbox-boot-mac-os-x/, i have wrote this plist and placed it in /Library/LaunchDaemons/bar.foo.WikiVirtualBox.plist: <plist version="1.0"> <dict> <key>Label</key> <string>bar.foo.WikiVirtualBox</string> <key>ProgramArguments</key> <array> <string>/usr/bin/VBoxHeadless</string> <string>-s</string> <string>wiki</string> </array> <key>RunAtLoad</key> <true></true> <key>UserName</key> <string>root</string> <key>WorkingDirectory</key> <string>/var/root</string> <key>StandardErrorPath</key> <string>/var/log/bar.foo.WikiVirtualBox.stderr.log</string> <key>StandardOutPath</key> <string>/var/log/bar.foo.WikiVirtualBox.stdout.log</string> </dict> </plist> and told launchd to start it: sudo launchctl load -w /Library/LaunchDaemons/bar.foo.WikiVirtualBox.plist . The Logfile But the VM doesn't start. A Look at tail -f /var/log/system.log shows: sudo[1909]: administrator : TTY=ttys000 ; PWD=/Users/administrator ; USER=root ; COMMAND=/bin/launchctl load -w /Library/LaunchDaemons/bar.foo.WikiVirtualBox.plist VBoxSVC[1914]: 3891612: (connectAndCheck) Untrusted apps are not allowed to connect to or launch Window Server before login. VBoxSVC[1914]: kCGErrorFailure: Set a breakpoint @ CGErrorBreakpoint() to catch errors as they are logged. com.apple.launchd[1] (bar.foo.WikiVirtualBox[1910]): Exited with exit code: 1 When i log into the server via ssh (so no login window opened) i can run: /usr/bin/VBoxHeadless -s wiki and it works. So i don't understand the error above.

    Read the article

  • Can I set up a VM Host's drives to appear as if they belong to the VM OS?

    - by Sinaesthetic
    A couple things. I added two of the host drives to the shared drives area of the VM. Neither of them show up in the VM's OS. What I actually would like to do is configure two of these drives that are on the host OS to appear as if they are on the VM. So that I can share them through the VM. Sounds wonkey, I know. The VM is Windows Server 2008 and the Host is Mac OSX Lion. I would like to host my media drives through windows server rather than over OSX as I have nothing but problems. I'm not sure if this is possible. Any input?

    Read the article

< Previous Page | 43 44 45 46 47 48 49 50 51 52 53 54  | Next Page >